问题描述
||
为什么我打印/显示结果时为什么
eval(\"11.05\") + eval(\"-11\")
结果为0.05000000000000071,而不是预期的0.05。我有什么想念的吗?
解决方法
这与
eval
无关。实际上,如果您输入控制台11.05 - 11
,就会发生以下情况:
这是编程语言如何存储浮点数的结果。它们包括一个小错误。如果您想了解更多有关此的内容,请查看此内容。
, 这与eval
无关(应避免使用)。
11.05 - 11
也有同样的问题。
这只是通常的浮点问题
, 正如其他人指出的那样,这是一个浮点问题,与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);
, 函数eval
在这里绝对是无辜的。罪魁祸首是浮点运算。如果您不希望小数点后有大量数字,则可以进行限制。但是你无法避免。