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

Примеры

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;
};

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

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

ECMAScript (ECMA-262)
Определение 'Number.isSafeInteger' в этой спецификации.

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

Update compatibility data on GitHub
КомпьютерыМобильныеServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome для AndroidFirefox для AndroidOpera для AndroidSafari on iOSSamsung InternetNode.js
isSafeIntegerChrome Полная поддержка 34Edge Полная поддержка 12Firefox Полная поддержка 32IE Нет поддержки НетOpera Полная поддержка 21Safari Полная поддержка 10WebView Android Полная поддержка ≤37Chrome Android Полная поддержка 34Firefox Android Полная поддержка 32Opera Android Полная поддержка 21Safari iOS Полная поддержка 10Samsung Internet Android Полная поддержка 2.0nodejs Полная поддержка 0.12

Легенда

Полная поддержка  
Полная поддержка
Нет поддержки  
Нет поддержки

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