Javascript - 轻微划分错误

时间:2012-07-01 19:27:19

标签: javascript math

  

可能重复:
  Javascript Math Error: Inexact Floats

我做了这个

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

其中this.length是一个双精度数。我查了一下这个师,发现我已经关闭了.000002到第四个阵列单元。

  1. 是否有任何人可以想到的特定于javascript的原因?它可能只是环境,所以如果不是没什么大不了的话
  2. 如果是,我可以修理吗?
  3. 非常感谢提前

2 个答案:

答案 0 :(得分:0)

这是预期的。计算机上的Floating point操作有small accuracy errors这样,因为它们存储在计算机内部。有关详细信息,建议您阅读What Every Computer Scientist Should Know About Floating-Point Arithmetic

  

将无数多个实数压缩成有限数量的位   需要近似的表示。虽然有无限的   许多整数,在大多数程序中,整数计算的结果都可以   以32位存储。相反,给定任意数量的位,   大多数带有实数的计算都会产生数量   不能使用那么多位来精确表示。因此   浮点计算的结果通常必须按顺序舍入   以适应其有限的表示。这个舍入误差是   浮点计算的特征。

答案 1 :(得分:0)

您应该阅读:What Every Programmer Should Know About Floating-Point Arithmetic。这就是计算机上如何表示浮点数。