javascript float比较给出意想不到的结果

时间:2015-08-10 05:59:14

标签: javascript floating-point comparison

我希望这种比较可以跳过抛出错误,当我删除' ='它表现得像我期望的那样。知道为什么吗?

if (!0.03509624834492526 >= 0) {
    throw new Error("DOH");
}

3 个答案:

答案 0 :(得分:6)

原因是!0.0350...正在将值转换为布尔值,结果为false。接下来,当使用等号时,将false与0进行比较是正确的,因此这是真的。请参阅以下提醒:



alert('!0.03509624834492526 is "' + !0.03509624834492526 + '"')
alert('false >= 0 is "' + (false >= 0) + '"')




如果你想检查数字是否不大于或等于0,那么它只留下一个选项,它会更小。尝试:

if (0.03509624834492526 < 0) {
    throw new Error("DOH");
}

答案 1 :(得分:1)

找到答案,必须明确比较顺序,见下文:

if (!(0.03509624834492526 >= 0)) {
    throw new Error("DOH");
}

答案 2 :(得分:-3)

可能是因为您使用了3个运算符,即(!,&gt;,=)

您可以在表达式中使用2个运算符

你可以像

一样改变你的表达方式
if((!0.03509624834492526 > 0)&&(!0.03509624834492526 = 0)){
--- 
}

希望这对你有用