How do I check if a number evaluates to infinity?

烈酒焚心 提交于 2019-11-28 04:15:42
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.isFinite 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);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!