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 July 2015.

Die Number.isSafeInteger() statische Methode bestimmt, ob der übergebene 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(Math.pow(2, 53)));
// Expected output: "Precision may be lost!"

console.log(warn(Math.pow(2, 53) - 1));
// Expected output: "Precision safe."

Syntax

js
Number.isSafeInteger(testValue)

Parameter

testValue

Der Wert, der darauf getestet wird, ob er ein sicherer Integer ist.

Rückgabewert

Der boolesche Wert true, wenn der angegebene Wert eine Zahl ist, die ein sicherer Integer ist. Andernfalls false.

Beschreibung

Die sicheren Integer umfassen alle Ganzzahlen von -(253 - 1) bis 253 - 1, einschließlich (±9.007.199.254.740.991). Ein sicherer Integer ist ein Integer, der:

  • exakt als IEEE-754-Doppelpräzisionszahl dargestellt werden kann, und
  • dessen IEEE-754-Darstellung nicht das Ergebnis des Rundens einer anderen Ganzzahl ist, um in die IEEE-754-Darstellung zu passen.

Zum Beispiel ist 253 - 1 ein sicherer Integer: Er kann exakt dargestellt werden, und keine andere Ganzzahl wird auf ihn gemäß irgendeinem IEEE-754-Rundungsmodus gerundet. Im Gegensatz dazu ist 253 kein sicherer Integer: Er kann exakt in IEEE-754 dargestellt werden, aber die Ganzzahl 253 + 1 kann nicht direkt in IEEE-754 dargestellt werden, sondern wird stattdessen im Rundungsmodus "auf nächste Zahl runden" oder "auf null runden" auf 253 gerundet.

Um Werte jenseits von ~9 Billiarden mit voller Präzision zu bearbeiten, wird die Verwendung einer Arbitrary Precision Arithmetic Library benötigt. Lesen Sie What Every Programmer Needs to Know about Floating Point Arithmetic für weitere Informationen über die Darstellung von Gleitkommazahlen.

Für größere Ganzzahlen sollten Sie den Typ BigInt in Betracht ziehen.

Beispiele

Verwendung von isSafeInteger()

js
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® 2025 Language Specification
# sec-number.issafeinteger

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isSafeInteger

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch