2011-01-18 4 views

答えて

149
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY) 
{ 
    // ... 
} 

あなたはおそらく、あなたがNaNを治療する方法に応じて、代わりにisFinite機能を使用することができます。 isFiniteは、POSITIVE_INFINITY,NEGATIVE_INFINITYまたはNaNの場合はfalseを返します。

if (isFinite(result)) 
{ 
    // ... 
} 
+1

パーフェクト - ありがとう!ホーマー。 –

+2

' - ?Infinity'や' - ?1/0'の代わりに 'Number。(POSITIVE | NEGATIVE)_INFINITY'を使う理由は? –

+3

@Eli:グローバルな 'Infinity'プロパティは、読み込み専用ではありません。つまり、再定義することができます。たとえば、' var x = 42;無限大= 42; alert(x === Infinity); '*" true "を表示します。 (確かにそれはあいまいなケースであり、 'Infinity'や' NaN'などを再定義しようとする人は、奇妙なことが起こるはずです)。 – LukeH

9

シンプルn === n+1またはn === n/0作品:

function isInfinite(n) { 
    return n === n/0; 
} 

ネイティブisFinite()が数字への入力を強制されることに注意してください。 isFinite([])およびisFinite(null)は、両方とも、例えば、trueである。

2

実際には、n === n + 1は51ビットより大きい数値に対しては機能します。 ES6

1e16 + 1 === 1e16; // true 
1e16 === Infinity; // false 
+2

これはryanveの答えに対するコメントです。 – Gary

4

Number.isFinite()メソッドは、渡された値が有限数であるか否かを判断します。

Number.isFinite(Infinity); // false 
Number.isFinite(NaN);  // false 
Number.isFinite(-Infinity); // false 

Number.isFinite(0);   // true 
Number.isFinite(2e64);  // true 
+0

[アクセス可能](https://www.w3schools.com/jsref/jsref_isfinite.asp)from ECMAScript 1 – MohaMad

関連する問題