2011-01-18 12 views

Respuesta

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

Usted podría utilizar la función isFinite lugar, dependiendo de cómo se desea tratar NaN. isFinite devuelve false si su número es POSITIVE_INFINITY, NEGATIVE_INFINITY o NaN.

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

Perfecto - gracias! Homero. –

+2

¿Por qué usar 'Número. (POSITIVO | NEGATIVO) _INFINITY' en lugar de' -? Infinity' o '-? 1/0'? –

+3

@Eli: la propiedad global 'Infinity' no es de solo lectura, lo que significa que puede redefinirse: por ejemplo,' var x = 42; Infinito = 42; alerta (x === Infinito); 'muestra *" verdadero "*. (Es cierto que es un caso oscuro, y cualquiera que decida redefinir 'Infinity',' NaN' etc. debería esperar que ocurran cosas raras.) – LukeH

9

Un simple n === n+1 o n === n/0 obras:

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

tener en cuenta que el nativo isFinite() coacciona entradas a los números. isFinite([]) y isFinite(null) son ambos true por ejemplo.

2

Actualmente, n === n + 1 funcionará para números mayores de 51 bits, p.

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

Esto debería ser un comentario sobre la respuesta de ryanve. – Gary

4

En ES6, el método Number.isFinite() determina si el valor pasado es un número finito.

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

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

[Accesible] (https://www.w3schools.com/jsref/jsref_isfinite.asp) de ECMAScript 1 – MohaMad

Cuestiones relacionadas