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.

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

BCD tables only load in the browser

Див. також