JavaScript · Senior · Frage 31 von 75
Warum liefert 9007199254740993 === 9007199254740992 true?
- 1Die letzte Ziffer eines langen Zahlenliterals wird verworfen
- 2Das ist ein Fehler der Engine V8, der nur in Chrome auftritt
- 3Zahlen über
MAX_SAFE_INTEGERlassen sich nicht exakt darstellen
Antwort zeigen
Richtige Antwort: Zahlen über MAX_SAFE_INTEGER lassen sich nicht exakt darstellen
Erklärung
Ein Double hat eine 53-Bit-Mantisse, also sind nicht alle ganzen Zahlen jenseits von 2^53 darstellbar. Große IDs aus APIs (z. B. 64-Bit) kommen in JSON als Strings oder werden über BigInt verarbeitet, sonst werden sie still verfälscht. Prüfen kann man mit Number.isSafeInteger.