Как я могу проверить переменную, чтобы выяснить, содержит ли она число, и это целое число?
например.
if (1.589 == integer) // false
if (2 == integer) // true
Любые подсказки?
Как я могу проверить переменную, чтобы выяснить, содержит ли она число, и это целое число?
например.
if (1.589 == integer) // false
if (2 == integer) // true
Любые подсказки?
num % 1 === 0
Это преобразует num
, чтобы сначала напечатать Number
, поэтому любое значение, которое может быть преобразовано в целое число, пройдет тест (например, '42'
, true
).
Если вы хотите исключить их, дополнительно проверьте
typeof num === 'number'
Вы также можете использовать parseInt()
для этого, то есть
parseInt(num) == num
для нетипизированной проверки и
parseInt(num) === num
для типизированной проверки.
Обратите внимание, что тесты не эквивалентны: проверка через parseInt()
сначала преобразуется в String
, поэтому, например, true
не пройдет проверку.
Также обратите внимание, что нетипизированная проверка через parseInt()
будет корректно обрабатывать шестнадцатеричные строки, но будет сбой для восьмеричных (то есть числовых строк с начальным нулем), поскольку они распознаются parseInt()
, но не Number()
. Если вам нужно обрабатывать десятичные строки с ведущими нулями, вам нужно указать аргумент radix.
Это работает:
if (Math.floor(x) == x)
Кто-то уже сделал это для вас.
Вы можете использовать формальное определение integer:
Math.floor(x) === x
Как насчет этого:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
Не работает ли это:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
вы можете либо использовать возможности разбора javas, либо попробовать modulo operator%...
Существует функция javascript, называемая isNaN (val), которая возвращает true, если val не является числом.
Если вы хотите использовать val как число, вам нужно использовать с помощью parseInt() или parseFloat()
EDIT: упс. Исправлена ошибка, указанная в комментарии