У меня есть серия вычислений Javascript, которые (только в IE) показывают Infinity в зависимости от выбора пользователя.Как проверить, оценивается ли число до бесконечности?
Как остановить слово Infinity
и показать, например, 0.0
?
У меня есть серия вычислений Javascript, которые (только в IE) показывают Infinity в зависимости от выбора пользователя.Как проверить, оценивается ли число до бесконечности?
Как остановить слово Infinity
и показать, например, 0.0
?
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
Вы могли бы использовать функцию isFinite
вместо этого, в зависимости от того, как вы хотите, чтобы лечить NaN
. isFinite
возвращает false
, если ваш номер POSITIVE_INFINITY
, NEGATIVE_INFINITY
или NaN
.
if (isFinite(result))
{
// ...
}
Простой n === n+1
или n === n/0
работы:
function isInfinite(n) {
return n === n/0;
}
Имейте в виду, что родной isFinite()
принуждают входы чисел. isFinite([])
и isFinite(null)
являются, например, true
.
Фактически n === n + 1 будет работать для чисел, больших 51 бит, например.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
Это должен быть комментарий к ответу Райенве. – Gary
В ES6
, The Number.isFinite()
Метод определяет переданное значение, является ли конечное число.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
[Доступно] (https://www.w3schools.com/jsref/jsref_isfinite.asp) из ECMAScript 1 – MohaMad
Perfect - спасибо! Гомер. –
Зачем использовать 'Number (ПОЗИТИВНО | НЕГАТИВНО) _INFINITY' вместо' -? Infinity' или '-? 1/0'? –
@Eli: глобальное свойство 'Infinity' не доступно для чтения, что означает, что его можно переопределить: например,' var x = 42; Бесконечность = 42; alert (x === Infinity); 'display *" true "*. (По общему признанию, это неясный случай, и любой, кто решает переопределить «Бесконечность», «NaN» и т. Д., Должен ожидать нечетные вещи.) – LukeH