Mam serię obliczeń Javascript, które (tylko w IE) pokazują nieskończoność w zależności od wyborów użytkownika.Jak sprawdzić, czy liczba jest nieskończoność?
Pojawia się i pojawia się na przykład słowo Infinity
?
Mam serię obliczeń Javascript, które (tylko w IE) pokazują nieskończoność w zależności od wyborów użytkownika.Jak sprawdzić, czy liczba jest nieskończoność?
Pojawia się i pojawia się na przykład słowo Infinity
?
if (result == Number.POSITIVE_INFINITY || result == Number.NEGATIVE_INFINITY)
{
// ...
}
Ewentualnie mógłby zamiast użyć funkcji isFinite
, w zależności od tego, jak chcesz się leczyć NaN
. isFinite
zwraca false
, jeśli Twój numer to POSITIVE_INFINITY
, NEGATIVE_INFINITY
lub NaN
.
if (isFinite(result))
{
// ...
}
Prosty n === n+1
lub n === n/0
utwory:
function isInfinite(n) {
return n === n/0;
}
mieć świadomość, że rodzimy isFinite()
wymusza wejść do liczb. isFinite([])
i isFinite(null)
są na przykład true
.
Właściwie n === n + 1 będzie działać dla liczb większych niż 51-bitowe, np.
1e16 + 1 === 1e16; // true
1e16 === Infinity; // false
To powinien być komentarz do odpowiedzi Ryanve'a. – Gary
W ES6
, sposób Number.isFinite()
określa, czy przekazany wartość jest skończona.
Number.isFinite(Infinity); // false
Number.isFinite(NaN); // false
Number.isFinite(-Infinity); // false
Number.isFinite(0); // true
Number.isFinite(2e64); // true
[Dostępne] (https://www.w3schools.com/jsref/jsref_isfinite.asp) z ECMAScript 1 – MohaMad
Idealny - dzięki! Homer. –
Po co używać 'Number. (POZYTYWNY | NEGATYWNY) _INFINITY' zamiast' -? Infinity' lub '-? 1/0'? –
@Eli: Globalna właściwość 'Infinity' nie jest tylko do odczytu, co oznacza, że można ją ponownie zdefiniować: Na przykład' var x = 42; Infinity = 42; alert (x === Infinity); "wyświetla *" true "*. (Wprawdzie jest to niejasny przypadek i każdy, kto zdecyduje się na przedefiniowanie 'Infinity',' NaN' itp., Powinien spodziewać się dziwnych rzeczy.) – LukeH