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

标签 javascript decimal addition

<分区>

Possible Duplicate:
Elegant workaround for JavaScript floating point number problem

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

如果我在纸上加上 285.72 + 142.86,它等于 428.58,您可以使用计算器得到相同的答案。

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

Example

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

最佳答案

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

有关示例,请参见此维基百科条目: http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems

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

Microsoft .NET 有类似的行为:

float x = 285.72f

float y = 142.86f

float z = x + y

结果: z = 428.580017

关于javascript 加法会产生奇怪的小数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164680/

相关文章:

javascript - 如何在可滚动的 div 中获取对象的相对位置?

javascript - 添加日期以将当前日期设置为明天 - Javascript

javascript - 带有文本的 CSS 动画故障

javascript - 如何正确链接包含在 Promise 中的不同异步操作

java - Double.toString 具有两位小数

python - 在python中添加范围

c# - 标准化 System.Decimal - 去除尾随零

Java:将十进制数转换为字符串

javascript - javascript 中的加法会产生一个对象

php - Symfony2 : Add method to an Entity