js处理小数点精度问题
numAdd
console.log("add-1", numAdd(1, 2));
console.log("add-2", numAdd(1.11, 2.22));
console.log("add-3", numAdd(0, 2.22));
console.log("add-4", numAdd(11, 0));
console.log("add-5", numAdd(11.2, ''));
console.log("add-6", numAdd('',2.9));
console.log("add-7", numAdd('',''));
function numAdd(num1:number | '', num2:number|'' ) {
let baseNum = 0,num1Pow = 0,num2Pow = 0;
let baseNum1, baseNum2,resNum
try {
baseNum1 = num1 && num1.toString().split(".")[1] ? num1.toString().split(".")[1].length : 1
} catch(e){
baseNum1 = 0
}
try {
baseNum2 = num2 && num2.toString().split(".")[1] ? num2.toString().split(".")[1].length : 1
} catch(e){
baseNum2 = 0
}
baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
num1Pow = num1 ? num1 * baseNum : 0
num2Pow = num2 ? num2 * baseNum : 0
resNum = (num1Pow + num2Pow) / baseNum
resNum = resNum.toFixed(1)
return resNum;
}