js 格式化数字

本文介绍了一种使用JavaScript实现的数字格式化方法,通过自定义格式化字符串来控制数字的显示样式,包括千位分隔符及小数点后的位数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * 格式化数字显示方式  
 * 用法 
 * formatNumber(12345.999,'#,##0.00'); 
 * formatNumber(12345.999,'#,##0.##'); 
 * formatNumber(123,'000000'); 
 * @param num 
 * @param pattern 
 
*/  
function formatNumber(num,pattern){  
  
var strarr = num?num.toString().split('.'):['0'];  
  
var fmtarr = pattern?pattern.split('.'):[''];  
  
var retstr='';  
  
  
// 整数部分  
  var str = strarr[0];  
  
var fmt = fmtarr[0];  
  
var i = str.length-1;    
  
var comma = false;  
  
for(var f=fmt.length-1;f>=0;f--){  
    
switch(fmt.substr(f,1)){  
      
case '#':  
        
if(i>=0 ) retstr = str.substr(i--,1+ retstr;  
        
break;  
      
case '0':  
        
if(i>=0) retstr = str.substr(i--,1+ retstr;  
        
else retstr = '0' + retstr;  
        
break;  
      
case ',':  
        comma 
= true;  
        retstr
=','+retstr;  
        
break;  
    }  
  }  
  
if(i>=0){  
    
if(comma){  
      
var l = str.length;  
      
for(;i>=0;i--){  
        retstr 
= str.substr(i,1+ retstr;  
        
if(i>0 && ((l-i)%3)==0) retstr = ',' + retstr;   
      }  
    }  
    
else retstr = str.substr(0,i+1+ retstr;  
  }  
  
  retstr 
= retstr+'.';  
  
// 处理小数部分  
  str=strarr.length>1?strarr[1]:'';  
  fmt
=fmtarr.length>1?fmtarr[1]:'';  
  i
=0;  
  
for(var f=0;f<fmt.length;f++){  
    
switch(fmt.substr(f,1)){  
      
case '#':  
        
if(i<str.length) retstr+=str.substr(i++,1);  
        
break;  
      
case '0':  
        
if(i<str.length) retstr+= str.substr(i++,1);  
        
else retstr+='0';  
        
break;  
    }  
  }  
  
return retstr.replace(/^,+/,'').replace(/\.$/,'');  
}  

转载于:https://www.cnblogs.com/hwx0807/archive/2011/06/28/2092019.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值