其他分享
首页 > 其他分享> > JS 避免精度问题的数值计算

JS 避免精度问题的数值计算

作者:互联网

    //浮点数加法运算   
    function FloatAdd(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   
    }   
    //浮点数减法运算   
    function FloatSub(arg1,arg2){   
        var r1,r2,m,n;   
        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));   
        //动态控制精度长度   
        n=(r1>=r2)?r1:r2;   
        return ((arg1*m-arg2*m)/m).toFixed(n);   
    }
    //浮点数加法运算   
    function FloatAdd(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   
    }   
    //浮点数减法运算   
    function FloatSub(arg1,arg2){   
        var r1,r2,m,n;   
        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));   
        //动态控制精度长度   
        n=(r1>=r2)?r1:r2;   
        return ((arg1*m-arg2*m)/m).toFixed(n);   
    }

 

标签:r1,r2,arg1,arg2,数值,JS,toString,Math,精度
来源: https://www.cnblogs.com/sunw11011/p/16380169.html