Number.isSafeInteger()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
Die Number.isSafeInteger()
statische Methode bestimmt, ob der angegebene Wert eine Zahl ist, die ein sicherer Integer ist.
Probieren Sie es aus
function warn(x) {
if (Number.isSafeInteger(x)) {
return "Precision safe.";
}
return "Precision may be lost!";
}
console.log(warn(2 ** 53));
// Expected output: "Precision may be lost!"
console.log(warn(2 ** 53 - 1));
// Expected output: "Precision safe."
Syntax
Number.isSafeInteger(testValue)
Parameter
testValue
-
Der zu testende Wert, ob er ein sicherer Integer ist.
Rückgabewert
Der boolesche Wert true
, wenn der gegebene Wert eine Zahl ist, die ein sicherer Integer ist. Andernfalls false
.
Beschreibung
Die sicheren Integer bestehen aus allen ganzen Zahlen von -(253 - 1) bis 253 - 1, einschließlich (±9.007.199.254.740.991). Ein sicherer Integer ist ein Integer, der:
- genau als eine IEEE-754 Doppelpräzisionszahl dargestellt werden kann, und
- dessen IEEE-754-Darstellung nicht das Ergebnis der Rundung eines anderen Integers ist, um zur IEEE-754-Darstellung zu passen.
Zum Beispiel ist 253 - 1 ein sicherer Integer: Er kann genau dargestellt werden, und kein anderer Integer wird unter einem IEEE-754-Rundungsmodus auf ihn gerundet. Im Gegensatz dazu ist 253 kein sicherer Integer: Er kann genau in IEEE-754 dargestellt werden, aber der Integer 253 + 1 kann nicht direkt in IEEE-754 dargestellt werden, sondern wird stattdessen auf 253 unter Rundungen auf das Nächste und Null gerundet.
Das genaue Arbeiten mit Werten größer oder kleiner als ca. 9 Billiarden erfordert die Verwendung einer Arbiträrpräzisions-Arithmetikbibliothek. Siehe What Every Programmer Needs to Know about Floating Point Arithmetic für weitere Informationen über Gleitpunktdarstellungen von Zahlen.
Für größere Integer sollten Sie den BigInt
-Typ in Betracht ziehen.
Beispiele
Verwendung von isSafeInteger()
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(2 ** 53 - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger("3"); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
Spezifikationen
Specification |
---|
ECMAScript® 2026 Language Specification # sec-number.issafeinteger |