This page was translated from English by the community.Learn more and join the MDN Web Docs community.
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 сентябрь 2015 г..
Статический методNumber.isSafeInteger() определяет, является ли переданное значениебезопасным целым числом.
In this article
Интерактивный пример
function warn(x) { if (Number.isSafeInteger(x)) { return "Precision safe."; } return "Precision may be lost!";}console.log(warn(Math.pow(2, 53)));// Expected output: "Precision may be lost!"console.log(warn(Math.pow(2, 53) - 1));// Expected output: "Precision safe."Синтаксис
Number.isSafeInteger(testValue)Параметры
testValueПроверяемое значение.
Возвращаемое значение
Логическое значениеtrue если переданное значение является безопасным целым числом, в противном случаеfalse.
Описание
К безопасным целым числам относятся все целые числа от -(253 – 1) до 253 – 1 включительно (±9 007 199 254 740 991). Безопасное целое число — это целое число, которое:
- может быть точно представлено как число двойной точности по стандарту IEEE-754, и
- это представление не может быть результатом округления любого другого целого числа для соответствия представлению по стандарту IEEE-754.
Например, 253 - 1 является безопасным целым числом: оно может быть точно представлено, и никакое другое целое число не округляется до него ни при каком режиме округления IEEE-754. А вот 253не является безопасным целым числом: оно может быть точно представлено в IEEE-754, но целое число 253 + 1 не может быть представлено в IEEE-754, а вместо этого округляется до 253 при округлении до ближайшего и до нуля.
Обработка значений больше или меньше ~9 квадриллионов с полной точностью требует использования библиотек, поддерживающихарифметику произвольной точности. Дополнительную информацию о представлениях чисел с плавающей точкой смотрите вThe Floating-Point Guide (англ.).
Для бо́льших целых чисел рассмотрите возможность использования типаBigInt.
Примеры
Number.isSafeInteger(3); // trueNumber.isSafeInteger(2 ** 53); // falseNumber.isSafeInteger(2 ** 53 - 1); // trueNumber.isSafeInteger(NaN); // falseNumber.isSafeInteger(Infinity); // falseNumber.isSafeInteger("3"); // falseNumber.isSafeInteger(3.1); // falseNumber.isSafeInteger(3.0); // trueСпецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-number.issafeinteger> |