I have a series of Javascript calculations that (only under IE) show Infinity depending on user choices.
How does one stop the word Infinity
appearing and for example, show 0.0
instead?
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
You could possibly use the isFinite
function instead, depending on how you want to treat NaN
. isFinite
returns false
if your number is POSITIVE_INFINITY
, NEGATIVE_INFINITY
or NaN
.
if (isFinite(result))
{
// ...
}
A simple n === n+1
or n === n/0
works:
function isInfinite(n) {
return n === n/0;
}
Be aware that the native isFinite()
coerces inputs to numbers. isFinite([])
and isFinite(null)
are both true
for example.
In ES6
, The Number.isFinite()
method determines whether the passed value is a finite number.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
Actually n === n + 1 will work for numbers bigger than 51 bit, e.g.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
You can use isFinite in window, isFinite(123)
:
You can write a function like:
function isInfinite(num) {
return !isFinite(num);
}
And use like:
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
You can also Number.isFinit
e which also check if the value is Number too and is more accurate for checking undefined
and null
etc...
Or you can polyfill it like this:
Number.isFinite = Number.isFinite || function(value) {
return typeof value === 'number' && isFinite(value);
}
来源:https://stackoverflow.com/questions/4724555/how-do-i-check-if-a-number-evaluates-to-infinity