Number.isSafeInteger()
Метод Number.isSafeInteger()
определяет, является ли переданное значение безопасным целым числом.
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.
Безопасное целое число это такое число, которое:
- может быть точно представлено числом IEEE-754 двойной точности и
- чьё представление IEEE-754 не может быть результатом округления любого другого целого числа, соответствующего представлению IEEE-754.
Например, число 253 - 1
является безопасным целым числом: оно может быть представлено точно и никакое другое целое число не округляется к нему ни в каком режиме округления IEEE-754. В противовес ему, число 253
не является безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число 253 + 1
не может быть напрямую представлено в IEEE-754 и округляется к числу 253
в режимах округления к ближайшему и к нулю. Безопасные целые числа состоят из всех целых чисел в диапазоне от -(253 - 1)
до 253 - 1
включительно (± 9007199254740991
или ± 9,007,199,254,740,991).
Обработка значений, больших или меньших чем ~9 квадриллионов, с высокой точностью требует использования библиотеки, умеющей работать с длиной арифметикой. Ознакомьтесь с Что Каждому Программисту Необходимо Знать об Арифметике с Вещественными числами для получения дополнительной информации о представлении чисел, с плавающей запятой.
Для больших целочисленных значений, рассмотрите возможность использования типа BigInt
.
Синтаксис
Number.isSafeInteger(testValue)
Параметры
testValue
- Значение, проверяемое на целочисленную «безопасность».
Возвращаемое значение
Boolean
значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.
Примеры
Number.isSafeInteger(3); // true
Number.isSafeInteger(Math.pow(2, 53)); // false
Number.isSafeInteger(Math.pow(2, 53) - 1); // true
Number.isSafeInteger(NaN); // false
Number.isSafeInteger(Infinity); // false
Number.isSafeInteger('3'); // false
Number.isSafeInteger(3.1); // false
Number.isSafeInteger(3.0); // true
Полифилл
Number.isSafeInteger = Number.isSafeInteger || function (value) {
return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};
Спецификации
Совместимость с браузерами
BCD tables only load in the browser
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Смотрите также
- Объект
Number
, которому принадлежит этот метод. Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER
BigInt