Ho una serie di calcoli Javascript che (solo sotto IE) mostrano Infinity a seconda delle scelte dell'utente.Come si verifica se un numero viene valutato su infinito?
Come si ferma la parola Infinity
e, ad esempio, mostrare invece 0.0
?
Ho una serie di calcoli Javascript che (solo sotto IE) mostrano Infinity a seconda delle scelte dell'utente.Come si verifica se un numero viene valutato su infinito?
Come si ferma la parola Infinity
e, ad esempio, mostrare invece 0.0
?
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
Si potrebbe utilizzare la funzione isFinite
invece, a seconda di come si desidera trattare NaN
. isFinite
restituisce false
se il numero è POSITIVE_INFINITY
, NEGATIVE_INFINITY
o NaN
.
if (isFinite(result))
{
// ...
}
Un semplice n === n+1
o n === n/0
opere:
function isInfinite(n) {
return n === n/0;
}
essere consapevoli del fatto che il nativo isFinite()
costringe gli ingressi ai numeri. isFinite([])
e isFinite(null)
sono entrambi true
per esempio.
In realtà n === n + 1 funzionerà per numeri maggiori di 51 bit, ad es.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
Questo dovrebbe essere un commento sulla risposta di Ryan. – Gary
In ES6
, Procedimento Number.isFinite()
determina se il valore passato è un numero finito.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
[Accessibile] (https://www.w3schools.com/jsref/jsref_isfinite.asp) da ECMAScript 1 – MohaMad
Perfetto - grazie! Omero. –
Perché usare 'Numero. (POSITIVO | NEGATIVO) _INFINITY' invece di' -? Infinity' o '-? 1/0'? –
@Eli: la proprietà globale 'Infinity' non è di sola lettura, il che significa che può essere ridefinita: Ad esempio,' var x = 42; Infinito = 42; alert (x === Infinity); 'visualizza *" true "*. (Ammetto che questo è un caso oscuro, e chiunque decida di ridefinire 'Infinity',' NaN' etc dovrebbe aspettarsi che accadano cose strane.) – LukeH