新闻: 服务热线:136-9361-0533/010-56153651
在线沟通
599385821
010-56153651

jquery解决小数点相加精度缺失问题

发布时间:2020-01-08 来源: 作者:[ 北京网站制作 · 思睿鸿途 ] 访问量:101

和大家分享一个有趣的测试:

0.1+0.2 == 0.3 //false
顿时郁闷,好吧!原来0.1+0.2变成:0.30000000000000004
再来一个 2.4/0.8 =>2.9999999999999996 没办法换种方式,都转换成整数 (2.4 * 100)/(0.8 * 100)
10.22 现在要减去 0.11 结果值又出现了很多的小数 10.110000000000001,然后我就用了 toFixed 方法来过滤小数,但是不知道跟前面那种转换成整数后再执行哪种效率高,好!还是试下再说吧!

image.png

查了一些资料,一是 JavaScript 浮点数计算的 Bug,另一个是和计算机最终转换成二进制计算有关系,但是为什么不是所有小数都会有这种现象,目前我也不清楚,有时间再去深入研究一下。

解决方法:
解决这种问题两种方法,第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位小数,不过,个人觉得这种方法在数据精度上会有一些问题。如果数据精度要求不高的话可以使用。

alert((0.1 + 0.2).toFixed(1));

第二种方法就是自己编写运算方法。以下是自定义加法函数,使用此方法进行相加会避免上面问题。

image.png
image.png

联系我们


地址:北京市朝阳区汤立路218号明天生活馆C座7层

电话:+86 136-9361-0533

邮箱:service@bjsrht.cn


欢迎您来到北京思睿鸿途科技有限公司,我们将携

程为您提供服务。