因前端需要计算浮点数据,参考了下Ai,Math.pow()是JavaScript中一种数学方法,可以用来计算某个数的幂。Math.pow(底数,指数)
preciseAdd(num1, num2) {
let num1Digits, num2Digits;
// 获取小数位数
try {
num1Digits = num1.toString().split('.')[1].length;
} catch (e) {
num1Digits = 0;
}
try {
num2Digits = num2.toString().split('.')[1].length;
} catch (e) {
num2Digits = 0;
}
// 选取最大小数位数作为结果的小数位数
const digits = Math.max(num1Digits, num2Digits);
// 将数值转换为整数进行计算
const multiplier = Math.pow(10, digits);
num1 = Math.round(num1 * multiplier);
num2 = Math.round(num2 * multiplier);
// 执行加法运算
const sum = num1 + num2;
// 最后再将结果除以相应的倍数,恢复小数点
return sum / multiplier;
},
console.log(this.preciseAdd(0.01,0.035) //0.045