Js floating point number to calculate exactly of plus minus multiply divide

  • 2020-03-30 01:03:41
  • OfStack


<SPAN style="FONT-SIZE: 18px">//Note: javascript addition results will have errors, in the two floating point Numbers will be more obvious when adding. This function returns a more accurate addition result.    
//Call: accAdd (arg1, arg2)    
//Return value: the exact result of arg1 plus arg2 & NBSP;  
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 (arg1*m+arg2*m)/m  
}</SPAN>  


<SPAN style="FONT-SIZE: 18px">  

//Note: javascript subtraction results will have errors, in the two floating point Numbers will be more obvious when adding. This function returns a more accurate subtraction result.    
//Call: accSub (arg1, arg2)    
//Return value: the exact result of arg1 minus arg2;  
function accSub(arg1,arg2){      
    return accAdd(arg1,-arg2);  
}</SPAN> 


<SPAN style="FONT-SIZE: 18px">  

//Note: javascript multiplication results will have errors, in the two floating point number multiplication will be more obvious. This function returns a more precise multiplication result.    
//Call: accMul (arg1, arg2)    
//Return value: the exact result of arg1 times arg2 & NBSP;  
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)  
}</SPAN> 


<SPAN style="FONT-SIZE: 18px">  

//Note: javascript division results will have errors, in two floating point division will be more obvious. This function returns a more precise division result.    
//Call: accDiv (arg1, arg2)    
//Return value: the exact result of arg1 divided by arg2 & NBSP;  
function accDiv(arg1,arg2){  
    var t1=0,t2=0,r1,r2;  
    try{t1=arg1.toString().split(".")[1].length}catch(e){}  
    try{t2=arg2.toString().split(".")[1].length}catch(e){}  
    with(Math){  
        r1=Number(arg1.toString().replace(".",""))  
        r2=Number(arg2.toString().replace(".",""))  
        return (r1/r2)*pow(10,t2-t1);  
    }  
}</SPAN>  

Related articles: