【问题标题】:Comparision of Numbers doesn't happen as expected, NaN behaviour数字比较没有按预期发生,NaN 行为
【发布时间】:2017-06-03 23:04:49
【问题描述】:

我有两个变量;

var x = '23b';
var y = '23a';

现在我有一个逻辑可以比较,如果它们相等,我想执行一些操作

注意:两者比较时,如果两者都是 NaN,则它们应该通过条件

我试过用这个

if (Number(x) == Number(y)) 

即使两者都是 NaN,这也会返回 false

【问题讨论】:

标签: javascript html numbers


【解决方案1】:

为什么要编号?

只需使用 parseInt

if (parseInt(x, 10) == parseInt(y, 10)) 

NaN 上的行为具有误导性

只是安慰这个 NaN == NaN

你会得到 false 的值

【讨论】:

    【解决方案2】:

    您可以使用isNAN

    var x = '23b';
    var y = '23a';
    if(isNAN(x) && isNAN(y))
    alert("both are NAN");
    

    【讨论】:

    • 如果两者都是数字,则该测试为真,无论它们是否相等。
    • @Traktor53 是的,这是真的,如果两者都是 NAN,这将比较,我认为他有同样的问题。
    • 测试两者是否都是 NaN:if(isNaN(x) && isNaN(y))
    • @Traktor53 哦修复了它:D.
    【解决方案3】:

    var x = '23b';
    var y = '23a';
    console.log(parseFloat(x)===parseFloat(y));

    【讨论】:

      【解决方案4】:

      尝试使用Object.is()

      var x = '23b';
      
      var y = '23a';
      
      Object.is(Number(x),Number(y)); => true
      

      这里也回答了..https://stackoverflow.com/a/48300450/617797

      【讨论】:

        猜你喜欢
        • 2019-11-27
        • 1970-01-01
        • 2018-01-21
        • 2013-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        相关资源
        最近更新 更多