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

相關文章
相關標籤/搜索