【问题标题】:comparing 2 numers in javascript with parseint将javascript中的2个数字与parseint进行比较
【发布时间】:2020-04-25 23:53:57
【问题描述】:

我试图在 num1 和 num2 之间进行比较:

<form>

    <input placehoder="num1" type="text" id="num1"/>

    <input placehoder="num1" type="text" id="num2"/>

    <button type="button" id="comparar">Compara</button>

</form>

问题是,直到我发现用命令let num1 = parseInt(document.getElementById("num1").value); 声明输入将是数字之前,系统工作但有时它没有显示正确的警报。

let compare = document.getElementById("comparar");



function comparator(){
    let num1 = parseInt(document.getElementById("num1").value);
    let num2 = parseInt(document.getElementById("num2").value);
    if ( num1 > num2){

            alert('num1 higher');

    }else if(num1 == num2){
        alert('are equal');
    }

    else{
        alert('num2 higher')
    }
}


compare.addEventListener('click', comparator);

有谁知道为什么不使用 parseInt 比较两个数字时会显示随机结果?,基本上它在比较什么?

谢谢

【问题讨论】:

标签: javascript


【解决方案1】:

您应该在比较之前validate number1 和 number2,或者设置type="number" 用于输入

例如parseInt("1a")返回1

如果输入 1a 和 1,则显示相等。

【讨论】:

    【解决方案2】:

    如果没有 parseInt,您将比较两个“字符串”而不是两个“int”。

    它不是随机的,它按 1、2、3、... 的顺序取数字,你会得到类似的结果:“2”>“10”==> true

    【讨论】:

      【解决方案3】:

      表单中的输入是字符串对象。对由数字组成的字符串对象调用 parsInt 会将其转换为数字对象。

      您可以使用 typeof 方法来检查类型。像这样:

      var num1 = "1"
      var num2 = 1
      
      console.log(typeof(num1)) // Output -> string
      console.log(typeof(num2)) // Output -> number
      

      在这个例子中,num1 是一个字符串对象,而 num2 是一个数字对象,即使它们具有相同的数字。

      【讨论】:

        【解决方案4】:

        如果不使用 parseInt,您将比较两个字符串。 在 JavaScript 中,字符串按字母顺序与首字母进行比较,例如:“banana” > “apple” 将返回 true。 如果第一个字母相等,则比较第二个字母,依此类推。 大写字母优先于小写字母。

        【讨论】:

          猜你喜欢
          • 2012-09-12
          • 1970-01-01
          • 2016-01-24
          • 1970-01-01
          • 1970-01-01
          • 2011-06-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多