陷阱,陷阱,JS浮点运算存在陷阱
时间:2011-01-20 来源:MyNet
YgAlterCR=((stringToFloat(YgAlterAmount)-stringToFloat(NewYgAlterAmount);
上面的代码还好,如果是下面的代码就悲剧了:
if (fAmount == fAmountTotle - fAmountByContract)
因为JS的加减乘除法存在陷阱,我们的程序常被客户鄙视,认为1+1不等于2的错误,很是影响公司形象,具体陷阱如下:
JS浮点计算错误举例:
加法
98.92+0.4= 99.32000000000001
98.52+0.6=99.11999999999999
减法
99.12-0.6=98.52000000000001
99.32-0.4=98.91999999999999
除法
212.59/2.25=94.48444444444445
乘法
98.92*0.4=39.568000000000005
当客户的业务数据刚好符合上面规则时,完了,明明1-1=0,就是提示不相等。
建议我们的程序禁止JS代码直接使用+-*/,解决方案很多,百度一下就知道了哈。
相关阅读 更多 +