J'ai une série de calculs Javascript qui (uniquement sous IE) montrent l'infini en fonction des choix de l'utilisateur.
Comment empêcher la Word Infinity
d'apparaître et, par exemple, affiche-t-il 0.0
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
Vous pouvez éventuellement utiliser la fonction isFinite
à la place, selon la manière dont vous souhaitez traiter NaN
. isFinite
renvoie false
si votre numéro est POSITIVE_INFINITY
, NEGATIVE_INFINITY
ou NaN
.
if (isFinite(result))
{
// ...
}
Un simple n === n+1
ou n === n/0
fonctionne:
function isInfinite(n) {
return n === n/0;
}
Sachez que la isFinite()
native coercule les entrées sur les nombres. isFinite([])
et isFinite(null)
sont tous les deux true
par exemple.
Dans ES6
, la méthode Number.isFinite()
détermine si la valeur transmise est un nombre fini.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
En fait, n === n + 1 fonctionnera pour les nombres supérieurs à 51 bits, par exemple.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
Vous pouvez utiliser isFinite in window, isFinite(123)
:
Vous pouvez écrire une fonction comme:
function isInfinite(num) {
return !isFinite(num);
}
Et utiliser comme:
isInfinite(null); //false
isInfinite(1); //false
isInfinite(0); //false
isInfinite(0.00); //false
isInfinite(NaN); //true
isInfinite(-1.797693134862316E+308); //true
isInfinite(Infinity); //true
isInfinite(-Infinity); //true
isInfinite(+Infinity); //true
isInfinite(undefined); //true
Vous pouvez également Number.isFinit
e vérifier également si la valeur est numérique et est plus précise pour la vérification de undefined
et null
etc.
Ou vous pouvez polyfill c'est comme ça:
Number.isFinite = Number.isFinite || function(value) {
return typeof value === 'number' && isFinite(value);
}