首页 新闻 会员 周边

javascript浮点数值计算误差

0
[待解决问题]

各位园友大家好,javascript中:

var a = 0.1;
var b = 0.2;
alert(a+b);

结果会是0.300000000000000004

 

而如果是0.05和0.25却能得到正确结果,请问下这个误差是怎么产生的?

MiroYuan的主页 MiroYuan | 初学一级 | 园豆:186
提问于:2012-07-28 10:12
< >
分享
所有回答(3)
0
artwl | 园豆:16736 (专家六级) | 2012-07-29 09:04
0

是因为js是使用基于IEEE745数值的浮点计算,还有0.15和0.15也能得到正确结果,这个问题我也是刚好前几天在js高级程序设计第二版第24页上看到

鲁班门前弄斧 | 园豆:204 (菜鸟二级) | 2012-07-29 09:09
0

简单地说,浮点数在电脑里也是按2进制存的,不像整数那样,这种存储方式会引起浮点数失真。

补充解决办法,判断浮点数大小,以及是否相等,只要判断差值在合理去见就行。比如 我们可以忽略 -0.000001 到 0.000001的误差,那么  0.9999999就可以被当做 1 了 。

acjialiren | 园豆:191 (初学一级) | 2012-08-06 00:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册