Spec-Zone.ru › JavaScript

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

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-number.max_safe_integer

Совместимость с браузерами

Десктопные Мобильные Серверные
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_INTEGER
  • Number.MAX_VALUE
  • Number.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API