Number.isInteger()

Number.isInteger() - это метод, который проверяет, является ли значение целым числом.

console.log(Number.isInteger(10));
console.log(Number.isInteger(10.5));

Результат:

true
false

Число 10 целое, поэтому метод вернул true. У числа 10.5 есть дробная часть, поэтому результат false.

Что такое Number.isInteger()

Number.isInteger() возвращает логическое значение: true или false.

true будет только тогда, когда переданное значение является числом и у него нет дробной части.

console.log(Number.isInteger(25));
console.log(Number.isInteger(0));
console.log(Number.isInteger(-7));

Результат:

true
true
true

Положительные, отрицательные числа и ноль могут быть целыми.

Синтаксис

Общая запись выглядит так:

Number.isInteger(value);

value - значение, которое нужно проверить.

let result = Number.isInteger(8);

console.log(result);

Результат:

true

Целые и дробные числа

Целое число записывается без дробной части.

console.log(Number.isInteger(4));
console.log(Number.isInteger(100));

Результат:

true
true

Дробное число записывается с точкой.

console.log(Number.isInteger(4.5));
console.log(Number.isInteger(0.25));

Результат:

false
false

Запись 10.0 для JavaScript все равно считается целым числом, потому что фактически это то же самое значение, что и 10.

console.log(Number.isInteger(10.0));

Результат:

true

Метод не преобразует значения

Number.isInteger() ничего не преобразует. Если передать строку с числом, результат будет false.

console.log(Number.isInteger('10'));
console.log(Number.isInteger('10.5'));

Результат:

false
false

Строка ‘10’ выглядит как число, но тип у нее string. Метод проверяет строго: это уже число или нет.

Специальные числовые значения тоже не считаются целыми числами.

console.log(Number.isInteger(NaN));
console.log(Number.isInteger(Infinity));

Результат:

false
false

Проверка после Number()

Если значение пришло строкой, сначала его нужно преобразовать в число.

let value = '12';
let numberValue = Number(value);

console.log(Number.isInteger(numberValue));

Результат:

true

А вот дробное число проверку не пройдет:

let value = '12.5';
let numberValue = Number(value);

console.log(Number.isInteger(numberValue));

Результат:

false

Такой подход удобен, когда нужно проверить, что пользователь ввел именно целое число.

Number.isInteger() и prompt()

prompt() всегда возвращает строку. Поэтому сначала используем Number(), а потом проверяем результат.

let value = prompt('Введите количество товаров');
let count = Number(value);

if (Number.isInteger(count)) {
  console.log('Количество:', count);
} else {
  console.log('Введите целое число');
}

Если пользователь введет 5, условие выполнится. Если введет 5.5 или текст, сработает блок else.

Если пустой ввод запрещен, его лучше проверять отдельно. Number(”) дает 0, а 0 является целым числом.

Итого

Number.isInteger() проверяет, является ли значение целым числом. Метод не преобразует строки и другие типы данных.

Number.isInteger(value);

Чаще всего его используют после Number(), когда нужно убедиться, что получилось именно целое число, а не дробное значение или NaN.