2011-01-18 19 views

cevap

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

Muhtemelen sen NaN tedavi etmek istiyorum nasıl bağlı yerine isFinite işlevini kullanabilirsiniz. isFinite, numaranız POSITIVE_INFINITY, NEGATIVE_INFINITY veya NaN ise false döndürür.

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

Mükemmel - teşekkürler! Homer. –

+2

Neden '-? Infinity' veya' -? 1/0' yerine 'Number. (POZİTİF | NEGATİF) _INFINITY' kullanılır? –

+3

@Eli: Global 'Infinity' özelliği salt okunur değil, yani yeniden tanımlanabilir: Örneğin, var = 42; Sonsuzluk = 42; uyarısı (x === Sonsuzluk); 'görüntüler *" doğru "*. (Kuşkusuz bu karanlık bir durumdur ve "Sonsuzluk", "NaN" vb. Şeyleri yeniden tanımlamaya karar veren herkesin tuhaf şeyler olmasını beklemeliyiz.) – LukeH

9

Basit n === n+1 veya n === n/0 çalışır:

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

yerli isFinite() numaralara girdileri coerces unutmayın. Örneğin, isFinite([]) ve isFinite(null) öğelerinin ikisi de true'dir.

2

Aslında n === n + 1, 51 bit'den büyük sayılar için çalışacaktır, örn. ES6 olarak

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

Bu Ryanve'nin cevabı hakkında bir yorum olmalı. ECMAScript gelen – Gary

4

, Number.isFinite() yöntem iletilen değer sonlu sayı olup olmadığını tespit eder.

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

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

[Erişilebilir] (https://www.w3schools.com/jsref/jsref_isfinite.asp) 1 – MohaMad

İlgili konular