Стала Number.MAX_SAFE_INTEGER
відображає найбільше безпечне ціле числове значення у JavaScript (253 - 1
).
Для більших цілих значень використовуйте BigInt
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
Джерело цих інтерактивних прикладів зберігається у репозиторії на GitHub. Якщо ви маєте бажання зробити свій внесок у проект інтерактивних прикладів - будь ласка, зклонуйте репозиторій https://github.com/mdn/interactive-examples та пришліть нам pull request.
Атрибути поля 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. |
Сумісність з веб-переглядачами
BCD tables only load in the browser
Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій https://github.com/mdn/browser-compat-data, надішліть нам свій pull request.