Number.isSafeInteger()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Метод 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
значение, сообщающее о том, является ли переданное значение безопасным целочисленным числом или же нет.
Примеры
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
);
};
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-number.issafeinteger |
Совместимость с браузерами
BCD tables only load in the browser
Смотрите также
- Объект
Number
, которому принадлежит этот метод. Number.MIN_SAFE_INTEGER
Number.MAX_SAFE_INTEGER
BigInt