最近在写一个后台管理系统时,遇到一个问题。
场景:输入三个值,计算三个值的和。
然后就遇到了上图中的js
精确度的问题。
然后在浏览器控制台复现了。这个是js精确度的问题。
1.通过函数解决js
精确度问题
add(num1, num2) {
var p1 = 0;
var p2 = 0;
if (num1.toString().split(".").length > 1) {
p1 = num1.toString().split(".")[1].length;
}
if (num2.toString().split(".").length > 1) {
p2 = num2.toString().split(".")[1].length;
}
var p = p1 > p2 ? p1 : p2;
var n1 = num1 * Math.pow(10, p);
var n2 = num2 * Math.pow(10, p);
var result = (n1 + n2) / Math.pow(10, p);
return result;
},
2.使用
let val1 = 0.6;
let val2 = 0.1;
let val3 = 0.1;
this.add(this.add(val1,val2),val3);//这样就可以计算出三个值的和了
3.测试
完成!!!