js 计算精度问题及解决方案
js 计算精度问题及解决方案
·
为啥会有精度问题
我猜你肯定问或被问过,在JS 中0.1+0.2为啥不等于0.3。
那是因为js 中的数据是使用64位双精度浮点型来表示的。用有限的位数来表示无穷的数字,显然是不可能滴。
js 在进行运算时,比如 0.1 +0.2 。会将,0.1 和0.2 分别转化成二进制的数,然后进行运算,运算完成后,也会得到一个二进制的数,然后检查这个结果,有没有上下溢出,如果溢出就会产生精度问题。
详细可见链接: JS基础 | 浮点数计算原理剖析 - 掘金
常见的精度问题
1. 浮点数计算,如 0.1+02
2. 大数计算,如 9999999999+1
3. toFixed 不准确,如(55535.225).toFixed(2) => 55535.22
解决方案
我认为目前最优的解法,就是将数字,转化成字符串,进行模拟运算。
现在有相对比较成熟的库 bignumber.js decimal.js big.js
更多推荐
所有评论(0)