jquery数值精度计算

Posted ewei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery数值精度计算相关的知识,希望对你有一定的参考价值。

 
        /**
         *判断数值是否相等
         * @param source 原比较数据
         * @param target 目标比较数据
         * @param accuracy 精度值
         * @returns {boolean}
         */
        isEqual:function(source,target,accuracy){
            accuracy = accuracy == undefined ? 10:accuracy; //默认精度位10
            return parseFloat(source).toFixed(accuracy) ===  parseFloat(target).toFixed(accuracy);
        }
        /**
         *数值相加
         * @param firstNumber
         * @param lastNumber
         * @returns {number}
         */
        accuracyAdd:function(firstNumber,lastNumber){
            var num1,num2,m;
            try{num1=firstNumber.toString().split(".")[1].length}catch(e){num1=0};
            try{num2=lastNumber.toString().split(".")[1].length}catch(e){num2=0};
            m=Math.pow(10,Math.max(num1,num2));
            return (firstNumber*m+lastNumber*m)/m;
        }
        /**
         * 数值相减
         * @param firstNumber
         * @param lastNumber
         * @returns {string}
         */
        accuracySub:function(firstNumber,lastNumber){
        var r1,r2,m,n;
        try{r1=firstNumber.toString().split(".")[1].length}catch(e){r1=0}
        try{r2=lastNumber.toString().split(".")[1].length}catch(e){r2=0}
        m=Math.pow(10,Math.max(r1,r2));
        //last modify by deeka
        //动态控制精度长度
        n=(r1>=r2)?r1:r2;
        return ((firstNumber*m-lastNumber*m)/m).toFixed(n);
    }
        /**
         * 除法函数,两数相除
         * @param arg1
         * @param arg2
         * @returns {number}
         */
        accuracyDiv:function(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);
        }
    }
        /**
         * 乘法函数,两数相乘
         * @param arg1
         * @param arg2
         * @returns {number}
         */
        accuracyMul:function(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)
    }

 

以上是关于jquery数值精度计算的主要内容,如果未能解决你的问题,请参考以下文章

jquery 精度计算代码,指定精确小数位

GLSL-片段着色器不同部分的精度不同

大数运算(加减乘除)

解决浮点型数值计算精度丢失的一种实现

Java数值计算精度舍入于溢出问题

C++不知算法系列之高精度数值的处理算法