Number.MAX_SAFE_INTEGER
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.
Статическое свойство Number.MAX_SAFE_INTEGER
представляет максимальное безопасное целочисленное значение в JavaScript (253 – 1).
Для бо́льших целых чисел используется BigInt
.
Интерактивный пример
Значение
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
будет иметь истинное значение, что математически неверно. Больше информации в Number.isSafeInteger()
.
Поскольку 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
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-number.max_safe_integer |
Совместимость с браузерами
BCD tables only load in the browser