加上浮点运算结果很奇怪

问题描述

|| 为什么我打印/显示结果时为什么
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
在这里绝对是无辜的。罪魁祸首是浮点运算。如果您不希望小数点后有大量数字,则可以进行限制。但是你无法避免。