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 = Number.isSafeInteger || function (value) {
   return Number.isInteger(value) && Math.abs(value) <= Number.MAX_SAFE_INTEGER;
};

Приклади

Використання isSafeInteger

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

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

Специфікація
ECMAScript (ECMA-262)
The definition of 'Number.isSafeInteger' in that specification.

Сумісність з веб-переглядачами

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
isSafeIntegerChrome Full support 34Edge Full support 12Firefox Full support 32IE No support NoOpera Full support 21Safari Full support 10WebView Android Full support ≤37Chrome Android Full support 34Firefox Android Full support 32Opera Android Full support 21Safari iOS Full support 10Samsung Internet Android Full support 2.0nodejs Full support 0.12

Legend

Full support  
Full support
No support  
No support

Див. також