Как я могу проверить переменную, чтобы выяснить, содержит ли она число, и целое число?Как определить, является ли заданное число целым?
, например.
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.
Это делает это, спасибо. – jirkap
Существует функция javascript, называемая isNaN (val), которая возвращает true, если val не является числом.
Если вы хотите использовать Вэл как число, вам необходимо отлиты с использованием ParseInt() или parseFloat()
EDIT: упс. Исправлена ошибка, как указано в комментариях
Просто от имени функции я бы подумал, что «isNaN» вернет true, если val «is * Not * a Number», что и означает NaN. Опечатка? –
isNaN (val) возвращает true, если val не является числом, но возвращает false и для нецелых чисел, поэтому он не решит проблему. – Amok
Как об этом:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
Это не сработает, потому что 8.000 по-прежнему является целым числом. –
Возможно, это зависит от вашего определения (и прецедента) целого числа – bdukes
Хмм. Правда. По математическим вопросам я склонен думать о них в терминах чисел, а не цифр - следовательно, мой комментарий выше. –
можно либо использовать Javas разбора возможности или же попробовать оператор по модулю% ...
Будет ли это не работает:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Вы всегда должны включать параметр radix: parseInt (число, 10) – Greg
Ой, да. Починил это. – paracycle
@Greg: необязательно - может потребоваться пройти шестнадцатеричные символы; восьмеричные ошибки будут терпеть неудачу, поскольку они распознаются 'parseInt()', но не 'Number()' – Christoph
У кого-то уже есть done it for you.
Как говорит @Greg выше (http://stackoverflow.com/questions/1323314/detecting-if-a-given-number- is-an-integer # comment-1157013), это должно включать параметр radix для parseInt. – bdukes
Это работает:
if (Math.floor(x) == x)
У этого есть преимущество, если x является 'false'; –
Вы можете использовать формальное определение целого числа:
Math.floor(x) === x
возможно дубликат [Как проверить, является ли переменная целое число в JavaScript?] (HTTP://переполнение стека.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript) –