javascript 添加会产生奇怪的小数问题

Mar*_*ark 5 javascript decimal addition

可能的重复:
JavaScript 浮点数问题的优雅解决方法

为什么使用javascript将2个数字相加时,会返回疯狂的小数点数?

如果我在纸上加上 285.72 + 142.86 它等于 428.58,你用计算器得到同样的答案。

但是,如果我从 2 个文本框中添加该数字,它将返回 428.58000000000004

例子

我需要我的 javascript 返回 428.58。我知道我可以使用 .toFixed(),但我不想使用,因为我不明白为什么将两个数字相加会在小数点后产生如此疯狂的数字。

Kev*_*ski 5

并非所有数字都可以精确地用浮点数表示。进行了近似值,当您对不精确的数字进行一次又一次的操作时,情况会变得更糟。

请参阅此维基百科条目的示例: http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

如果您将加法输入更改为可以用浮点精确表示的值(例如 1/8),它就会起作用。尝试数字:285.125 和 142.125。

Microsoft .NET 有类似的行为:

float x = 285.72f

float y = 142.86f

float z = x + y
Run Code Online (Sandbox Code Playgroud)

结果:z = 428.580017