javascript 浮动比较给出了意想不到的结果
javascript float comparison gives unexpected result
我希望这种比较不会引发错误,当我删除“=”时,它的行为与我预期的一样。知道为什么吗?
if (!0.03509624834492526 >= 0) {
throw new Error("DOH");
}
找到答案,必须明确比较顺序,见下文:
if (!(0.03509624834492526 >= 0)) {
throw new Error("DOH");
}
原因是!0.0350...
是把值转成boolean,结果是false。接下来,使用等号时,将 false 与 0 进行比较,结果为 true,因此为 true。查看这些警报:
alert('!0.03509624834492526 is "' + !0.03509624834492526 + '"')
alert('false >= 0 is "' + (false >= 0) + '"')
如果你想检查数字是否不大于或等于0,那么它只剩下一个选项,它更小。尝试:
if (0.03509624834492526 < 0) {
throw new Error("DOH");
}
可能是因为您使用了 3 个运算符,即 (!,>,=)
您可以在一个表达式中使用 2 个运算符
你可以像这样改变你的表情
if((!0.03509624834492526 > 0)&&(!0.03509624834492526 = 0)){
---
}
希望这对你有用
我希望这种比较不会引发错误,当我删除“=”时,它的行为与我预期的一样。知道为什么吗?
if (!0.03509624834492526 >= 0) {
throw new Error("DOH");
}
找到答案,必须明确比较顺序,见下文:
if (!(0.03509624834492526 >= 0)) {
throw new Error("DOH");
}
原因是!0.0350...
是把值转成boolean,结果是false。接下来,使用等号时,将 false 与 0 进行比较,结果为 true,因此为 true。查看这些警报:
alert('!0.03509624834492526 is "' + !0.03509624834492526 + '"')
alert('false >= 0 is "' + (false >= 0) + '"')
如果你想检查数字是否不大于或等于0,那么它只剩下一个选项,它更小。尝试:
if (0.03509624834492526 < 0) {
throw new Error("DOH");
}
可能是因为您使用了 3 个运算符,即 (!,>,=)
您可以在一个表达式中使用 2 个运算符
你可以像这样改变你的表情
if((!0.03509624834492526 > 0)&&(!0.03509624834492526 = 0)){
---
}
希望这对你有用