-1

可能重复:
Javascript 数学错误:不精确的浮点数

我做了这个

this.cues = []
for(var i, i = 1; i <= 8; i++){
    cue = this.length * (i/8.0)
   this.cues.push(cue)

this.length 是双精度数。我检查了除法,发现我偏离了 0.000002,直到大约第四个阵列单元。

  1. 是否有任何人能想到的特定于 javascript 的原因?这可能只是环境,所以如果不是什么大不了的事
  2. 如果是这样,我可以修复它吗?

提前谢谢了

4

2 回答 2

0

这是意料之中的。由于计算机内部存储的方式,计算机上的浮点运算具有像这样的小精度误差。有关更多信息,我建议您阅读每个计算机科学家都应该了解的关于浮点运算的知识

将无限多个实数压缩为有限位数需要近似表示。尽管整数有无限多,但在大多数程序中,整数计算的结果可以存储在 32 位中。相反,给定任何固定位数,大多数实数计算将产生无法使用那么多位精确表示的量。因此,浮点计算的结果必须经常四舍五入以适应其有限表示。这种舍入误差是浮点计算的特征。

于 2012-07-01T19:29:18.820 回答
0

您应该阅读:每个程序员都应该知道的关于浮点运算的知识。这就是浮点数在计算机上的简单表示方式。

于 2012-07-01T19:30:56.167 回答