JavaScript · Senior · Pytanie 31 z 75
Dlaczego 9007199254740993 === 9007199254740992 zwraca true?
- ✓Poprawna odpowiedź: Liczb powyżej
MAX_SAFE_INTEGERnie da się przedstawić dokładnie - 2To błąd silnika V8, który ujawnia się tylko w Chrome
- 3Ostatnia cyfra długiego literału liczbowego jest odrzucana
Wyjaśnienie
Double ma 53-bitową mantysę, więc nie wszystkie liczby całkowite powyżej 2^53 da się przedstawić. Duże identyfikatory z API (np. 64-bitowe) przychodzą w JSON jako stringi lub są obsługiwane przez BigInt, inaczej po cichu się psują. Sprawdza się to przez Number.isSafeInteger.