js handles decimal point precision issues

js handles decimal point precision issues

numAdd

console.log("add-1", numAdd(1, 2)); // add-1 3.0
console.log("add-2", numAdd(1.11, 2.22)); // add-2 3.3
console.log("add-3", numAdd(0, 2.22)); // add-3 2.2
console.log("add-4", numAdd(11, 0)); // add-4 11.0
console.log("add-5", numAdd(11.2, ''));//add-5 11.2
console.log("add-6", numAdd('',2.9));//add-6 2.9
console.log("add-7", numAdd('',''));//add-7 0.0

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;
}

Guess you like

Origin blog.csdn.net/weixin_47409897/article/details/127817032