Javascript-轻微的除法错误
可能重复:Javascript-轻微的除法错误,javascript,math,Javascript,Math,可能重复: 是我干的 this.cues = [] for(var i, i = 1; i <= 8; i++){ cue = this.length * (i/8.0) this.cues.push(cue) this.cues=[] 对于(var i,i=1;i这是意料之中的。计算机上的操作之所以如此,是因为它们存储在计算机内部的方式。有关更多信息,我建议您阅读 将无穷多个实数压缩为有限位数 需要一个近似表示。虽然有无限 许多整数,在大多数程序中,整数计算的结果可以
是我干的
this.cues = []
for(var i, i = 1; i <= 8; i++){
cue = this.length * (i/8.0)
this.cues.push(cue)
this.cues=[]
对于(var i,i=1;i这是意料之中的。计算机上的操作之所以如此,是因为它们存储在计算机内部的方式。有关更多信息,我建议您阅读
将无穷多个实数压缩为有限位数
需要一个近似表示。虽然有无限
许多整数,在大多数程序中,整数计算的结果可以
以32位存储。相反,给定任何固定位数,
大多数实数计算会产生
无法使用那么多位精确表示。因此
浮点计算的结果通常必须按顺序四舍五入
以适应其有限表示。此舍入误差为
浮点运算的特点
你应该读到:“这就是浮点数在计算机上的表示方式。另一个双精度-我得到的,它刚好是.000002。应该没有理由关闭它,因为8.0在IEEE-754中是完全可以表示的,正如你的合理大小的整数除以它一样。这个.length
的值是多少?375.386658-有趣的是,一个单一的反对声音,但代表性极高:)这就是为什么;你原来的数字不太准确<代码>>>>(375.386658).hex()
'0x1.7762fc04c8bcap+8'
>>'.25f'%375.386658
'375.3866580000000112704583444'