导航

javascript-保留2位小数函数方法

Posted on 2018-03-24 21:11  小飞博客  阅读(1361)  评论(0编辑  收藏  举报

 1 function zero(num){
 2       var str=num.toString();
 3       if(str.indexOf(".")==-1){
 4           return num+'.00';
 5       }else{
 6         //整个数字的长度
 7         var len=str.length;
 8         //整数部分长度
 9         var integerLen=str.indexOf('.');
10         if(len>(integerLen+2)){
11             return str.slice(0,integerLen+3);
12         }else if(len==(integerLen+2)){
13             return str+'0';
14         }else{
15             return str;
16         }
17       }
18 }

保留2位小数函数方法

 
1 console.log(zero(11))//11.00
2 console.log(zero(11.0))//11.00
3 console.log(zero(11.00))//11.00
4 console.log(zero(11.001))//11.00
5 console.log(zero(11.1))//11.10
6 console.log(zero(11.00001))//11.00

 保留3位小数方法

 1 var num= 343232343.00001;
 2 var num1= 343232343.01;
 3 var num2= 343232343.120;
 4 var num3= 343232343.12;
 5 var num4= 343232343.1;
 6 var num5= 343232343;
 7 console.log(zero(num));//343232343.000
 8 console.log(zero(num1));//343232343.010
 9 console.log(zero(num2));//343232343.120
10 console.log(zero(num3));//343232343.120
11 console.log(zero(num4));//343232343.100
12 console.log(zero(num5));//343232343.000
 1 function zero(num){
 2       var str=num.toString();
 3       if(str.indexOf(".")==-1){
 4           return num+'.000';
 5       }else{
 6         //整个数字的长度
 7         var len=str.length;
 8         //整数部分长度
 9         var integerLen=str.indexOf('.');
10         if(len>(integerLen+4)){
11             return str.slice(0,integerLen+4);
12         }else if(len<(integerLen+4)){
13             var n='';
14             if(len==integerLen+3){
15                 for(var i=0;i<1;i++){
16                     n+='0';
17                 }
18             } else {
19                 for(var i=0;i<2;i++){
20                     n+='0';
21                 }
22             }
23             return str+n;
24         }else if(len==(integerLen+4)){
25             return str;
26         }
27       }
28 }

 最近有空又写出一个更加使用的保留小数位数:

 1 Number.prototype.zero=function(n){
 2     //数字转成字符串以便进行下一步的处理
 3     var str=this+'';
 4     //没有小数点
 5     if(str.indexOf('.')==-1){
 6         return n <= 0 ? str : str+'.'.padEnd(str.length+n-1,'0')
 7     }else{
 8     //有小数点  分 小于 等于 大于
 9     
10         //找到小数点的索引值
11         var dotIndex=str.indexOf('.')
12         //整数部分加小数点一共的长度
13         var intDotLen=dotIndex+1;
14         //存下字符串的长度
15         var totalLen=str.length;
16         //获取小数位数
17         var dotLen=totalLen-intDotLen;
18         // console.log(dotIndex+','+intDotLen+','+totalLen+','+dotLen)
19 
20         if(dotLen<n){
21             return n <= 0 ? str.slice(0,intDotLen-1) : str.padEnd(intDotLen+n,'0')
22         }else if(dotLen==n){
23 
24             return n <= 0 ?  tr.slice(0,intDotLen-1) : str
25         }else if(dotLen>n){
26             // console.log(str.slice(0,intDotLen+n))
27             return  n <= 0 ? str.slice(0,intDotLen-1) : str.slice(0,intDotLen+n)
28         }
29     }
30 }
31 // var a=11;
32 // var a=11.0;
33 // var a=11.00;
34 // var a=11.001;
35 // var a=11.1;
36 // var a=11.00001;
37 
38  console.log(a.zero(-1))
39  console.log(a.zero(0))
40  console.log(a.zero(1))
41  console.log(a.zero(2))
42  console.log(a.zero(3))
43  console.log(a.zero(4))