【发布时间】:2015-08-10 05:59:14
【问题描述】:
我希望这种比较不会引发错误,并且当我删除“=”时,它的行为方式与我预期的一样。知道为什么吗?
if (!0.03509624834492526 >= 0) {
throw new Error("DOH");
}
【问题讨论】:
标签: javascript floating-point comparison
我希望这种比较不会引发错误,并且当我删除“=”时,它的行为方式与我预期的一样。知道为什么吗?
if (!0.03509624834492526 >= 0) {
throw new Error("DOH");
}
【问题讨论】:
标签: javascript floating-point comparison
原因是!0.0350...将值转换为布尔值,结果为假。接下来,当使用等号时,将 false 与 0 进行比较是正确的,所以这是正确的。查看这些警报:
alert('!0.03509624834492526 is "' + !0.03509624834492526 + '"')
alert('false >= 0 is "' + (false >= 0) + '"')
如果您想检查数字是否不大于或等于 0,那么它只留下一个选项,它更小。试试:
if (0.03509624834492526 < 0) {
throw new Error("DOH");
}
【讨论】:
找到答案,必须明确比较的顺序,见下文:
if (!(0.03509624834492526 >= 0)) {
throw new Error("DOH");
}
【讨论】:
x < y代替!(x >= y)。
这可能是因为您使用了 3 个运算符,即 (!,>,=)
您可以在一个表达式中使用 2 个运算符
你可以改变你的表情
if((!0.03509624834492526 > 0)&&(!0.03509624834492526 = 0)){
---
}
希望这对你有用
【讨论】: