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

 

原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/267895.html

(0)
上一篇 2022年6月19日 02:53
下一篇 2022年6月19日 02:53

相关推荐

发表回复

登录后才能评论