当前位置: 代码迷 >> JavaScript >> 为什么javascript接受小数作为整数
  详细解决方案

为什么javascript接受小数作为整数

热度:75   发布时间:2023-06-05 09:38:56.0

我有这个HTML:

<input type='number' id='length' step='0.1' min='0'; max='5'>Length

和这个Javascript

num=document.getElementById('length').value;
if(num==1 || 2 || 3 || 4|| 5){
num='0'+num;
}

我的问题是这样的:虽然我只希望括号内的代码执行,如果输入的数字是一个整数,它也会激活,如果它检测到0.8或其他一些小数。 任何想法为什么? 我如何解决它? 谢谢。

要确保num是一个整数,而不必定义所有可能性,请使用:

if (num % 1 == 0)

你应该做

if (num == 1 || num == 2 || num == 3 || num == 4 || num == 5)

错误 - 否则它会将2与2进行比较并且表示对于最后4个'if'参数它是正确的。

CORRECTO - JS中的任何数字都被认为是真的。

为什么:

num==1 || 2 || 3 || 4|| 5

等于:

(num==1) || 2 || 3 || 4|| 5

所以如果num是"1" (总是一个字符串类型),表达式返回true ,否则返回2 (也是一个真值),最后你的if语句总是成功。

怎么修:

// implicitly converts the string type into number type before comparison
// returns true if it is an integer-like string
num == Math.floor(num) 

所以你可以这样做:

if (num == Math.floor(num) && num > 0 && num < 6) {
    // an integer-like string that meets the requirement [1, 5]
}

但请记住, num现在仍然是string类型。 如果你想要一个number ,请执行:

num = +num

您必须编辑“If”循环:

if (num == 1 || num == 2 || num == 3 || num == 4 || num == 5)
  相关解决方案