Javascript 浮点加法的奇怪结果
为什么在打印/显示结果时会出现这种情况Javascript 浮点加法的奇怪结果,javascript,Javascript,为什么在打印/显示结果时会出现这种情况 eval("11.05") + eval("-11") 结果是0.0500000000000071,而不是预期的0.05。有什么我遗漏的吗?这与评估无关(你应该避免) 使用11.05-11也会遇到同样的问题 这只是通常的这与eval无关。事实上,如果您在控制台中键入11.05-11,就会发生这种情况: 这是编程语言如何存储浮点数的结果;其中包括一个小错误。如果您想了解更多这方面的信息,.函数eval在这里绝对是无辜的。罪魁祸首是浮点运算。如果您不希望小
eval("11.05") + eval("-11")
结果是0.0500000000000071,而不是预期的0.05。有什么我遗漏的吗?这与
评估无关(你应该避免)
使用11.05-11
也会遇到同样的问题
这只是通常的这与eval
无关。事实上,如果您在控制台中键入11.05-11
,就会发生这种情况:
这是编程语言如何存储浮点数的结果;其中包括一个小错误。如果您想了解更多这方面的信息,.函数eval
在这里绝对是无辜的。罪魁祸首是浮点运算。如果您不希望小数点后有大量数字,则可以限制。但是您无法避免它。正如其他人所指出的,这是一个浮点问题,与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
问题,它是由浮点运算引起的。看见