これらの2つの関数を、無限大と無限大の動作が異なるようにする理由は何でしょうか。誰もこの矛盾が有用であると感じたことはありますか?なぜparseInt(Infinity)はNaNを返し、parseFloat(Infinity)は無限大を返しますか?
parseInt(Infinity); // NaN
parseFloat(Infinity); // Infinity
これらの2つの関数を、無限大と無限大の動作が異なるようにする理由は何でしょうか。誰もこの矛盾が有用であると感じたことはありますか?なぜparseInt(Infinity)はNaNを返し、parseFloat(Infinity)は無限大を返しますか?
parseInt(Infinity); // NaN
parseFloat(Infinity); // Infinity
その質問への答えは、右の二つの機能のための仕様である:
parseIntは文字列パラメータを取ります。
最初の文字を数値に変換できない場合、parseIntはNaNを返します。
parseFloatはまた、値のインフィニティを解析して返すことができます。 isFinite関数を使用して、結果が有限の数値(Infinity、-Infinity、NaNではなく)であるかどうかを判断できます。
infinity
ではJavaScriptの整数範囲内ではないので
parseInt
はinfinity
を返すことができません。浮動小数点範囲内では有効です。
としては、となりますか?私は言うことができません。私は仕事のドメインでは、NaN
は、エラーが起こっていると私は私がが今までinfinity
を使用していたと信じていないことを意味します'文字列パラメータを取る'と '数値に変換することはできません。 'は必ずしも正しい説明ではありません。 'Number( 'Infinity')'は_Infinite_を表す数値であり、 'parseFloat'は文字列' parseFloat( 'Infinity') 'も取ります。 'Infinity.toString();'は '' Infinity''になります。したがって、 '' parseInt(Infinity) 'は' 'parseInt(" Infinity ")'になります。 –
InfinityはJavaScriptの整数範囲内にありません。どうして? 8888888888888888888888888888888888888888889889999999999999999999999のような数字は無限大になるはずですか? –
@Devashish JSの最大安全な整数は '9007199254740991'です。上記はすべて浮動小数点精度です。 [Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) –
http://www.peterkroener.de/javascript-parseint-vs-parsefloat/ – soyuka