言简意赅 也是借鉴很多方法理解总结而来
(还是有浮点数问题,还是使用成熟的插件吧!!!){文章暂留}
补充:建议使用成熟的插件计算!big.js,math.js,bignumber.js等
function add() {
// 数字小数点后位数长度数组-次幂数-结果
let l = [],
m,
r = 0
var len = arguments.length
for (let i = 0; i < len; i++) {
l.push(arguments[i].toString().split(".")[1]?.length)
}
m = Math.pow(10, Math.max(...l));
// 计算
for (let i = 0; i < len; i++) {
r = (arguments[i] * m + r * m) / m;
}
return r
}
const a = add(0.1,0.2)
console.log(a); //0.3