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

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Number.MAX_SAFE_INTEGER' in that specification.

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
MAX_SAFE_INTEGERChrome Full support 34Edge Full support 12Firefox Full support 31IE No support NoOpera Full support 21Safari Full support 9WebView Android Full support ≤37Chrome Android Full support 34Firefox Android Full support 31Opera Android Full support 21Safari iOS Full support 9Samsung Internet Android Full support 2.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

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