【问题标题】:Why does javascript accept a decimal as an integer为什么javascript接受小数作为整数
【发布时间】:2015-10-16 10:44:50
【问题描述】:

我有这个 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 或其他小数,它也会激活。任何想法为什么?我如何解决它?谢谢。

【问题讨论】:

  • javascript中没有整数,只有numbers。此外,在计算数字时,除 0 之外的所有值都等于 true 所以 || 2 等于 true
  • 你的if 逻辑坏了。
  • 除非你只想要那些特定的整数,否则使用这样的东西,而不是长的if:stackoverflow.com/questions/3885817/…
  • num==1 || 2 || 3 || 4|| 5 实际上意味着(num==1) || (2) || (3) || (4) || (5),因此您的代码将始终评估为真
  • if 语句与 jQuery 无关。这是基本的 JavaScript。

标签: javascript html input integer


【解决方案1】:

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

if (num % 1 == 0)

【讨论】:

  • 感谢您的帮助。我犯了一个愚蠢的错误。 JS有点生疏。我会在早上接受,现在不能造成时间限制。谢谢!
【解决方案2】:

为什么:

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

【讨论】:

    【解决方案3】:

    你应该这样做

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

    错误 - 否则它将 2 与 2 进行比较,并认为最后 4 个“if”参数为真。

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

    【讨论】:

    • “比较 2 和 2”?任何不是 0 的数字都被认为是 JavaScript 中的真值。 (我没有*投票)
    • 是的,@Vohuman 说的是实际发生的事情。不,我做了投票。为何代码不起作用的解释是在传播错误信息。
    • 这是正确的比较方法,但它并不能解决 OP 的问题,因为它只检查 5 个整数,但还有很多很多其他整数
    • @LưuVĩnhPhúc 它确实解决了它,因为我只需要检查一些。如果您没有注意到,输入表单的最大值为 5,因此我只需要检查整数 1-5。给他投票。
    【解决方案4】:

    您必须编辑“If”循环:

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

    【讨论】:

      猜你喜欢
      • 2015-05-29
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-17
      • 2020-06-22
      相关资源
      最近更新 更多