为什么我打印/显示
的结果eval("11.05") + eval("-11")
它出现为0.05000000000000071而不是预期的0.05。有什么我想念的吗?
答案 0 :(得分:5)
这与eval
无关。实际上,如果您键入控制台11.05 - 11
,会发生这种情况:
这是编程语言如何存储浮点数的结果;它们包含一个小错误。如果您想了解更多相关信息,请check this out。
答案 1 :(得分:3)
答案 2 :(得分:1)
正如其他人所指出的,这是一个浮点问题,与eval
无关。现在eval
:你可以在这里轻松避免使用:
Number("11.05") + Number("-11");
为了避免错误的结果,您可以使用toPrecision
:
(Number("11.05") + Number("-11")).toPrecision(12);
// or if you want 0.05 to be the outcome
(Number("11.05") + Number("-11")).toPrecision(1);
答案 3 :(得分:0)
函数eval
在这里绝对是无辜的。罪魁祸首是浮点运算。如果您不希望小数点后面有大量数字,则可以限制。但你无法避免它。