Number.MAX_SAFE_INTEGER
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Статическое свойство данных Number.MAX_SAFE_INTEGER представляет максимальное безопасное целое число в JavaScript (253 – 1).
Для более крупных целых чисел рассмотрите возможность использования BigInt.
Попробовать
const x = Number.MAX_SAFE_INTEGER + 1; const y = Number.MAX_SAFE_INTEGER + 2; console.log(Number.MAX_SAFE_INTEGER); // Expected output: 9007199254740991 console.log(x); // Expected output: 9007199254740992 console.log(x === y); // Expected output: true
Значение
9007199254740991 (9 007 199 254 740 991, или ~9 квадриллионов).
Атрибуты свойства Number.MAX_SAFE_INTEGER
| |
|---|---|
| Изменяемое | нет |
| Перечисляемое | нет |
| Конфигурируемое | нет |
Описание
Формат чисел с плавающей запятой двойной точности имеет только 52 бита для представления мантиссы, поэтому он может безопасно представлять целые числа только в диапазоне от -(253 – 1) до 253 – 1. "Безопасный" в этом контексте означает возможность точно представлять целые числа и корректно их сравнивать. Например, Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 будет вычислено как true, что математически неверно. См. Number.isSafeInteger() для получения дополнительной информации.
Как упоминалось в Number.EPSILON, точность чисел зависит от их величины. Number.MAX_SAFE_INTEGER представляет наибольшее значение, при котором целочисленные операции могут выполняться точно, но вы все еще можете выполнять осмысленные арифметические операции с числами, превышающими это значение, просто без точности целочисленного уровня. Наибольшее представимое число в JavaScript — это фактически Number.MAX_VALUE, которое составляет примерно 1.7976931348623157 × 10308.
Поскольку MAX_SAFE_INTEGER является статическим свойством Number, вы всегда используете его как Number.MAX_SAFE_INTEGER, а не как свойство числового значения.
Примеры
Возвращаемое значение MAX_SAFE_INTEGER
Number.MAX_SAFE_INTEGER; // 9007199254740991
Взаимосвязь между MAX_SAFE_INTEGER и EPSILON
Number.EPSILON равно 2-52, а MAX_SAFE_INTEGER равно 253 – 1. Оба они выведены из ширины мантиссы, которая составляет 53 бита (при этом старший бит всегда равен 1). Их умножение даст значение, очень близкое, но не равное 2.
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998
Спецификации
Совместимость с браузерами
| Десктопные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
MAX_SAFE_INTEGER |
34 |
12 |
31 |
21 |
9 |
34 |
31 |
21 |
9 |
2.0 |
37 |
9 |
1.0.0 |
1.0 |
0.12.0 |
Смотрите также
- Полифил
Number.MAX_SAFE_INTEGERвcore-js - Полифил es-shims
Number.MAX_SAFE_INTEGER Number.MIN_SAFE_INTEGERNumber.MAX_VALUENumber.isSafeInteger()BigInt
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER