Как определить, является ли данное число целым числом? - PullRequest
26 голосов
/ 24 августа 2009

Как проверить переменную, чтобы убедиться, что она содержит число и является целым числом?

, например

if (1.589 == integer) // false
if (2 == integer) // true

Есть какие-нибудь подсказки?

Ответы [ 8 ]

52 голосов
/ 24 августа 2009
num % 1 === 0

Это сначала преобразует num в тип Number, поэтому любое значение, которое может быть преобразовано в целое число, пройдет тест (например, '42', true).

Если вы хотите исключить их, дополнительно проверьте для

typeof num === 'number'

Вы также можете использовать parseInt() для этого, то есть

parseInt(num) == num

для нетипизированного чека и

parseInt(num) === num

для печатного чека.

Обратите внимание, что тесты не эквивалентны: проверка с помощью parseInt() сначала преобразуется в String, поэтому, например, true не пройдет проверку.

Также обратите внимание, что нетипизированная проверка через parseInt() будет правильно обрабатывать шестнадцатеричные строки, но не будет работать для восьмеричных чисел (то есть числовых строк с начальным нулем), поскольку они распознаются parseInt(), но не Number(). Если вам нужно обрабатывать десятичные строки с ведущими нулями, вам нужно будет указать аргумент radix.

9 голосов
/ 24 августа 2009

Это работает:

if (Math.floor(x) == x)
6 голосов
/ 24 августа 2009
4 голосов
/ 24 августа 2009

Вы можете использовать формальное определение целого числа:

Math.floor(x) === x
2 голосов
/ 24 августа 2009

Это не сработает:

if (parseInt(number, 10) == number)
{
  alert(number + " is an integer.");
}
2 голосов
/ 24 августа 2009

Как насчет этого:

if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
0 голосов
/ 24 августа 2009

Вы можете использовать возможности разбора javas или попробовать оператор по модулю% ...

0 голосов
/ 24 августа 2009

Существует функция JavaScript, называемая isNaN (val), которая возвращает true, если val не является числом.

Если вы хотите использовать val в качестве числа, вам необходимо выполнить приведение с использованием parseInt () или parseFloat ()

EDIT: упс. Исправлена ​​ошибка, указанная в комментарии

...