我做了这个
this.cues = []
for(var i, i = 1; i <= 8; i++){
cue = this.length * (i/8.0)
this.cues.push(cue)
其中this.length是一个双精度数。我查了一下这个师,发现我已经关闭了.000002到第四个阵列单元。
非常感谢提前
答案 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”。这就是计算机上如何表示浮点数。