JS精确计算数值方法

一、加法.net

         /**
           * 精确计算两数的和
           * @method additive
           * @param {Number} v1 有效数值1
           * @param {Number} v2 有效数值2
           * @return {Number} 两数值的和
           */
          function additive(v1,v2){ 
              var n1,n2,m;
              //获取两数的浮点位数
             try{n1=v1.toString().split(".")[1].length;}catch(e){n1=0} 
             try{n2=v2.toString().split(".")[1].length;}catch(e){n2=0} 
             //获取10为底数,最大两位数值的浮点位数次幂
             m=Math.pow(10,Math.max(n1,n2));
             return (v1*m+v2*m)/m; 
         } ip

 

二、减法     get

        /**
           * 精确计算两数的差
           * @method subtraction
           * @param {Number} v1 有效数值1 
           * @param {Number} v2 有效数值2 
           * @return {Number} v1-v2两数值的差
           */
           function subtraction(v1,v2){
              var n1,n2,m,n;
              //获取两数的浮点位数
              try{n1=v1.toString().split(".")[1].length}catch(e){n1=0}
              try{n2=v2.toString().split(".")[1].length}catch(e){n2=0}
               //获取10为底数,数值的最大浮点位数次幂
              m=Math.pow(10,Math.max(n1,n2));
              //获取数值的最大浮点位数,设置为返回值的精度长度
              n=Math.max(n1,n2);
              //toFixed格式化数值位数
              return ((v1*m-v2*m)/m).toFixed(n);
           } it

三、除法io

         /**
           * 精确计算两数的商
           * @method division
           * @param {Number} v1 有效数值1  被除数
           * @param {Number} v2 有效数值2  除数
           * @return {Number} 两数值的商
           */
          function division(v1,v2){ 
                var t1=0,t2=0,n1,n2; 
                var s1=v1.toString();
                var s2=v2.toString();
                //获取两数的浮点位数
                try{t1=s1.split(".")[1].length}catch(e){} 
                try{t2=s2.split(".")[1].length}catch(e){}
                //去除小数点符号,获取整数
                n1=Number(s1.replace(".","")) 
                n2=Number(s2.replace(".","")) 
                //两整数相除,乘以10为底数的(除数浮点位数-被除数的浮点位数)
                return (n1/n2)*pow(10,t2-t1); 
         } function

四、乘法class

        /**
           * 精确计算两数的积
           * @method subtraction
           * @param {Number} v1 有效数值1 
           * @param {Number} v2 有效数值2 
           * @return {Number} 两数值的乘积
           */
          function multiplication(v1,v2) { 
                var m=0;
                s1=v1.toString();
                s2=v2.toString(); 
                //获取两数的浮点位数
                try{m+=s1.split(".")[1].length}catch(e){} 
                try{m+=s2.split(".")[1].length}catch(e){} 
                //去除小数点的两数相乘,除以(10为底数,两值浮点位数的次幂)
                return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m); 
         } di

相关文章
相关标签/搜索