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)){
--- 
}

希望这对你有用