各位园友大家好,javascript中:
var a = 0.1;
var b = 0.2;
alert(a+b);
结果会是0.300000000000000004
而如果是0.05和0.25却能得到正确结果,请问下这个误差是怎么产生的?
是因为js是使用基于IEEE745数值的浮点计算,还有0.15和0.15也能得到正确结果,这个问题我也是刚好前几天在js高级程序设计第二版第24页上看到
简单地说,浮点数在电脑里也是按2进制存的,不像整数那样,这种存储方式会引起浮点数失真。
补充解决办法,判断浮点数大小,以及是否相等,只要判断差值在合理去见就行。比如 我们可以忽略 -0.000001 到 0.000001的误差,那么 0.9999999就可以被当做 1 了 。