Number.MAX_SAFE_INTEGER

Стала Number.MAX_SAFE_INTEGER відображає найбільше безпечне ціле числове значення у JavaScript (253 - 1).

Для більших цілих значень використовуйте BigInt.

Атрибути поля Number.MAX_SAFE_INTEGER
Доступний для запису ні
Доступний для переліку ні
Доступний для налаштування ні

Опис

Стала MAX_SAFE_INTEGER має значення 9007199254740991 (9,007,199,254,740,991 або ~9 квадриліонів). Причина в тому, що JavaScript використовує формат чисел з рухомою крапкою подвійної точності, як зазначено у IEEE 754, та може безпечно відображати числа лише в діапазоні між -(253 - 1) та 253 - 1.

"Безпечний" в даному контексті означає можливість точно відображати та коректно порівнювати цілі числа. Наприклад,  Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2 поверне true, що, з математичної точки зору, неправильно. Дивіться більше на сторінці Number.isSafeInteger().

Це поле не існує у старих переглядачах. Його використання без перевірки його наявності, як ось Math.max(Number.MAX_SAFE_INTEGER, 2), видасть небажаний результат, такий як NaN.

У зв'язку з тим, що MAX_SAFE_INTEGER є статичною властивістю Number, слід завжди викликати її як Number.MAX_SAFE_INTEGER, аніж як метод створеного вами об'єкта Number.

Поліфіл

if (!Number.MAX_SAFE_INTEGER) {
    Number.MAX_SAFE_INTEGER = 9007199254740991; // Math.pow(2, 53) - 1;
}

Приклади

Значення, яке вертає MAX_SAFE_INTEGER

Number.MAX_SAFE_INTEGER // 9007199254740991

Числа, більші за безпечне ціле значення

Цей код поверне 2, тому що у числах з плаваючою крапкою значенням є кінцева десяткова "1", за винятком випадків денормалізованих чисел, таких як нуль.

Number.MAX_SAFE_INTEGER * Number.EPSILON; // 2

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

Сумісність з веб-переглядачами

BCD tables only load in the browser

Дивіться також