Number.isSafeInteger()
Метод Number.isSafeInteger()
определяет, является ли переданное значение безопасным целым числом.
Интерактивный пример
Безопасное целое число это такое число, которое:
- может быть точно представлено числом 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
значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.
Примеры
js
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
Полифил
js
Number.isSafeInteger =
Number.isSafeInteger ||
function (value) {
return (
Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER
);
};
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-number.issafeinteger |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Объект
Number
, которому принадлежит этот метод. Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER
BigInt