1. 程式人生 > >js加法和乘法的精確計算

js加法和乘法的精確計算

//加法函式,用來得到精確的加法結果 
//javascript的加法結果會有誤差,在兩個浮點數相加的時候會比較明顯。這個函式返回較為精確的加法結果。 
function accAdd(arg1,arg2){ 

    var r1,r2,m;

    try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}

    try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}

    m=Math.pow(10,Math.max(r1,r2));

    return (accMul(arg1,m)+accMul(arg2,m))/m; 

}

//javascript的乘法結果會有誤差,在兩個浮點數相乘的時候會比較明顯。這個函式返回較為精確的乘法結果。 
function accMul(arg1,arg2){ 

    var m=0,s1=arg1.toString(),s2=arg2.toString(); 

    try{m+=s1.split(".")[1].length}catch(e){} 

    try{m+=s2.split(".")[1].length}catch(e){} 

    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m) 

}