欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS数字计算时的精度问题

程序员文章站 2022-07-15 13:45:10
...

js产生精度问题的根本原因是计算机进制问题

解决精度问题的几种思路

  1. 使用javascript的toFixed()方法,进行四舍五入取整,但是此方法在最后一位等于5时的处理方法比较特殊,chrome浏览器测试结果如下:
   	1.005.toFixed(2)
   	"1.00"
   	1.0051.toFixed(2)
   	"1.01"

所以有精确计算需求的时候不宜采用
2.把小数转化成整数进行计算
把小数乘以对应的10的N次方,转化为整数再进行计算,如

	0.006*0.1
    0.0006000000000000001
    6*1/10000
    0.0006

但是当小数点后的位数过多时,转为整数后的计算过程可能会出现错误,如:

	123456789*123456789
    15241578750190520    计算错误
    123456789*123456789/1000000
    15241578750.19052   计算错误
    123456.789*123456.789
    15241578750.190521

所以此方案也不宜采用
3.把小数转为字符串,然后对字符串进行运算,这种方案实现比较复杂,但*是现成的,不需要自己造,这里推荐使用 : https://github.com/MikeMcl/decimal.js.
使用起来也比较简单,这里放个html项目中使用的例子
JS数字计算时的精度问题

相关标签: js 精度