【问题标题】:Does this === not work b/c of floating point rounding inaccuracies?这 === 对浮点舍入不准确不起作用吗?
【发布时间】:2023-03-27 15:05:02
【问题描述】:

假设我有这个 sn-p。

var age = prompt('what is your age?');

if (age === 30)
{
alert('your age is 30');
}

当我在提示中输入 30 时,if 语句不会触发。我怀疑它与浮点舍入错误有关,但并不确定。很高兴听到您对此的看法。

【问题讨论】:

    标签: javascript floating-point


    【解决方案1】:

    window.prompt() 返回一个字符串。字符串与数字不同。使用以下任意一种:

    if (age === '30') 
    if (+age === 30)  // Explicit type conversion
    if (age == 30)    // Implicit type conversion
    

    有关显式转换的说明,请参阅this answer。例如,00030 的输入也可能是有效的。

    【讨论】:

    • OP 也可能缺少对 === 真正含义的理解 - 可能也希望包括在内
    • @JRaymond 如果是这样的话,我参考这个问答:stackoverflow.com/questions/359494/…
    • 我认为主要问题是我对字符串和数字类型感到困惑。也许我应该在提示符中转换类型。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多