function add(a,b,len=2){
let [intPartA, decimalPartA] = a.toString().split('.').map(Number);
let [intPartB, decimalPartB] = b.toString().split('.').map(Number);
// 把小数换算成相同的位数
let intSum = intPartA + intPartB;
let decimalSum = 0;
if (typeof decimalPartA!='undefined') {
while (decimalPartA.toString().length<len) {
decimalPartA+='0'
}
decimalSum += Number(decimalPartA);
}
if (typeof decimalPartB!='undefined') {
while (decimalPartB.toString().length<len) {
decimalPartB+='0'
}
decimalSum += Number(decimalPartB);
}
//小数大于1的 加到整数上
if(decimalSum>=10**len){
let intPartC=Number(decimalSum.toString().slice(0,-len))
let decimalPartC=decimalSum.toString().slice(-len)
intSum+=intPartC
decimalSum=decimalPartC
}
// 把整数和小数用字符串拼接起来 不用除法防止丢失精度
return Number(intSum+'.'+decimalSum)
}
先把小数和整数用字符串方法分开,小数部分要换算成统一的位数进行相加,当超过指定位数需要,截取部分加到整数上处理, 当然最简单的还是 引入第三方