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

js
Number.MAX_SAFE_INTEGER; // 9007199254740991

Связь между MAX_SAFE_INTEGER и EPSILON

Number.EPSILON — это 2-52, а MAX_SAFE_INTEGER — это (253 – 1), оба значения являются производными от размера мантиссы, который составляет 53 бита (при этом старший бит всегда равен 1). Их умножение даст значение, очень близкое (но не равное) 2.

js
Number.MAX_SAFE_INTEGER * Number.EPSILON; // 1.9999999999999998

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

Specification
ECMAScript Language Specification
# sec-number.max_safe_integer

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

BCD tables only load in the browser

Смотрите также