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() определяет, является ли переданное значение безопасным целым числом.

Интерактивный пример

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."

Синтаксис

js
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.

Примеры

js
Number.isSafeInteger(3); // true
Number.isSafeInteger(2 ** 53); // false
Number.isSafeInteger(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

Спецификации

Specification
ECMAScript® 2025 Language Specification
# sec-number.issafeinteger

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
isSafeInteger

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также