解决js加减计算精度误差的问题
发布于 3 年前 作者 zhouming 741 次浏览 来自 分享

最近在做一个记账小程序的时候发现js的加减算法会有误差,例如

console.log(0.1+0.2);
console.log(6.8-0.9);
0.30000000000000004 
5.8999999999999995

在浮点数计算的时候,很多时候产生的都是这种极限数据,如果要精确进行整数转换,要放大的倍数过大

下面是解决的方法:

//消除js计算误差add、reduce是传入的加减数字,reduce是被加数(被减数),s是加减符号
function formatNum(add, reduce, s, num) {
  let m = Math.pow(10, num); //num是10的次幂
  let res = s == '+' ? (add * m + reduce * m) / m : (add * m - reduce * m) / m;
  return Math.round(res * m)/m;
}
console.log(formatNum(0.1,0.2,'+',2))
console.log(formatNum(6.8,0.9,'-',2))
0.3
5.9

有不足的地方请在评论区留言指点。

最后附上小程序码,欢迎体验;

适合情人记账、家庭记账、团队记账、多人记账的小程序

回到顶部