| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 | 
							- //本js引入是为了浮点小数运算结果不精确bug的办法,来源: http://blog.csdn.net/yao_jing/article/details/50778011
 
- //除法函数,用来得到精确的除法结果
 
- //说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
 
- //调用:accDiv(arg1,arg2)
 
- //返回值:arg1除以arg2的精确结果
 
- function accDiv(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);
 
-     }
 
- }
 
- //给Number类型增加一个div方法,调用起来更加方便。
 
- Number.prototype.div = function (arg){
 
-     return accDiv(this, arg);
 
- };
 
- //乘法函数,用来得到精确的乘法结果
 
- //说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
 
- //调用:accMul(arg1,arg2)
 
- //返回值:arg1乘以arg2的精确结果
 
- function accMul(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);
 
- }
 
- //给Number类型增加一个mul方法,调用起来更加方便。
 
- Number.prototype.mul = function (arg){
 
-     return accMul(arg, this);
 
- };
 
- //加法函数,用来得到精确的加法结果
 
- //说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
 
- //调用:accAdd(arg1,arg2)
 
- //返回值:arg1加上arg2的精确结果
 
- function accAdd(arg1,arg2){
 
-     var r1,r2,m,c;
 
-     try{r1=arg1.toString().split(".")[1].length}catch(e){r1=0}
 
-     try{r2=arg2.toString().split(".")[1].length}catch(e){r2=0}
 
-     c=Math.abs(r1-r2);
 
-     m=Math.pow(10,Math.max(r1,r2));
 
-     if(c>0){
 
-         var cm=Math.pow(10,c);
 
-         if(r1>r2){
 
-             arg1=Number(arg1.toString().replace(".",""));
 
-             arg2=Number(arg2.toString().replace(".",""))*cm;
 
-         }else{
 
-             arg1=Number(arg1.toString().replace(".",""))*cm;
 
-             arg2=Number(arg2.toString().replace(".",""));
 
-         }
 
-     } else {
 
-         arg1=Number(arg1.toString().replace(".",""));
 
-         arg2=Number(arg2.toString().replace(".",""));
 
-     }
 
-     return (arg1+arg2)/m;
 
-     //return (arg1*m+arg2*m)/m;
 
- }
 
- //给Number类型增加一个add方法,调用起来更加方便。
 
- Number.prototype.add = function (arg){
 
-     return accAdd(arg,this);
 
- };
 
- //减法函数
 
- function accSub(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));
 
-     //last modify by deeka
 
-     //动态控制精度长度
 
-     n=(r1>=r2)?r1:r2;
 
-     return ((arg2*m-arg1*m)/m).toFixed(n);
 
- }
 
- ///给number类增加一个sub方法,调用起来更加方便
 
- Number.prototype.sub = function (arg){
 
-     return accSub(arg,this);
 
- };
 
- //四舍五入或末尾加零,实现类似php的 sprintf("%.".decimal."f", val);
 
- // function roundnum(val,decimals){
 
- //     if(val !== ''){
 
- //         val = parseFloat(val);
 
- //         if(decimals < 1){
 
- //             val = (Math.round(val)).toString();
 
- //         }else{
 
- //             let num = val.toString();
 
- //             if(num.lastIndexOf('.') == -1){
 
- //                 num += '.';
 
- //                 num += makezero(decimals);
 
- //                 val = num;
 
- //             }else{
 
- //                 let valdecimals = num.split('.')[1].length;
 
- //                 if(parseInt(valdecimals) < parseInt(decimals)){
 
- //                     num += makezero(parseInt(decimals)-parseInt(valdecimals));
 
- //                     val = num;
 
- //                 }else if(parseInt(valdecimals) > parseInt(decimals)){
 
- //                     val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals))).div(makemultiple(decimals)) : makedecimalzero(decimals);
 
- //                     let num = val.toString();
 
- //                     if(num.lastIndexOf('.') == -1){
 
- //                         num += '.';
 
- //                         num += makezero(decimals);
 
- //                         val = num;
 
- //                     }else {
 
- //                         let valdecimals = num.split('.')[1].length;
 
- //                         if (parseInt(valdecimals) < parseInt(decimals)) {
 
- //                             num += makezero(parseInt(decimals) - parseInt(valdecimals));
 
- //                             val = num;
 
- //                         }
 
- //                     }
 
- //                 }
 
- //             }
 
- //         }
 
- //     }
 
- //     return val;
 
- // }
 
- //四舍五入
 
- function roundnum(val,decimals){
 
-     if(val !== ''){
 
-         val = parseFloat(val);
 
-         let _sign = (val < 0) ? -1 : 1;
 
-         if(decimals < 1){
 
-             val = (Math.round(val*_sign)/_sign).toString();
 
-         }else{
 
-             let num = val.toString();
 
-             if(num.lastIndexOf('.') == -1){
 
-                 // num += '.';
 
-                 // num += makezero(decimals);
 
-                 val = num;
 
-             }else{
 
-                 let valdecimals = num.split('.')[1].length;
 
-                 if(parseInt(valdecimals) < parseInt(decimals)){
 
-                     // num += makezero(parseInt(decimals)-parseInt(valdecimals));
 
-                     val = num;
 
-                 }else if(parseInt(valdecimals) > parseInt(decimals)){
 
-                     val = parseFloat(val) != 0 ? Math.round(val.mul(makemultiple(decimals)*_sign)).div(makemultiple(decimals)*_sign) : makedecimalzero(decimals);
 
-                     let num = val.toString();
 
-                     if(num.lastIndexOf('.') == -1){
 
-                         // num += '.';
 
-                         // num += makezero(decimals);
 
-                         val = num;
 
-                     }else {
 
-                         let valdecimals = num.split('.')[1].length;
 
-                         if (parseInt(valdecimals) < parseInt(decimals)) {
 
-                             // num += makezero(parseInt(decimals) - parseInt(valdecimals));
 
-                             val = num;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     return val;
 
- }
 
- //根据位数生成编号,3位-》001 ,5位-》00001
 
- function makenum(num){
 
-     let arr = new Array(num);
 
-     for(let i=0;i< num;i++){
 
-         if(i != num-1){
 
-             arr[i] = 0;
 
-         }else{
 
-             arr[i] = 1;
 
-         }
 
-     }
 
-     return arr.join('');
 
- }
 
- //生成num位的0
 
- function makezero(num){
 
-     let arr = new Array(num);
 
-     for(let i=0;i< num;i++){
 
-         arr[i] = 0;
 
-     }
 
-     return arr.join('');
 
- }
 
- //生成num小数位数的0.
 
- function makedecimalzero(num){
 
-     if(num < 1){
 
-         return '0';
 
-     }else{
 
-         return '0.'+makezero(num);
 
-     }
 
- }
 
- //生成num位的10倍数
 
- function makemultiple(num){
 
-     return Math.pow(10,parseInt(num));
 
- }
 
 
  |