5个javascript的数字格式化函数

Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便。  
十进制四舍五入  
这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:  
代码1:   
view sourceprint?  
01 function CurrencyFormatted(amount) {    

02     var i = parseFloat(amount);    

03     if(isNaN(i)) { i = 0.00; }    

04     var minus = '';    

05     if(i < 0) { minus = '-'; }    

06     i = Math.abs(i);    

07     i = parseInt((i + .005) * 100);    

08     i = i / 100;    

09     s = new String(i);    

10     if(s.indexOf('.') < 0) { s += '.00'; }    

11     if(s.indexOf('.') == (s.length - 2)) { s += '0'; }    

12     s = minus + s;    

13     return s;    

14 }    

15       

16 /**   

17 *   Usage:  CurrencyFormatted(12345.678);   

18 *   result: 12345.68   

19 **/   
代码2:  
view sourceprint?  
01 function format_number(pnumber,decimals){    

02     if (isNaN(pnumber)) { return 0};    

03     if (pnumber=='') { return 0};    

04           

05     var snum = new String(pnumber);    

06     var sec = snum.split('.');    

07     var whole = parseFloat(sec[0]);    

08     var result = '';    

09           

10     if(sec.length > 1){    

11         var dec = new String(sec[1]);    

12         dec = String(parseFloat(sec[1])/Math.pow(10,(dec.length - decimals)));    

13         dec = String(whole + Math.round(parseFloat(dec))/Math.pow(10,decimals));    

14         var dot = dec.indexOf('.');    

15         if(dot == -1){    

16             dec += '.';    

17             dot = dec.indexOf('.');    

18         }    

19         while(dec.length <= dot + decimals) { dec += '0'; }    

20         result = dec;    

21     } else{    

22         var dot;    

23         var dec = new String(whole);    

24         dec += '.';    

25         dot = dec.indexOf('.');        

26         while(dec.length <= dot + decimals) { dec += '0'; }    

27         result = dec;    

28     }      

29     return result;    

30 }    

31       

32 /**   

33 *   Usage:  format_number(12345.678, 2);   

34 *   result: 12345.68   

35 **/   

添加逗号  
这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。  
view sourceprint?  
01 function CommaFormatted(amount) {    

02     var delimiter = ","; // replace comma if desired    

03     amount = new String(amount);    

04     var a = amount.split('.',2)    

05     var d = a[1];    

06     var i = parseInt(a[0]);    

07     if(isNaN(i)) { return ''; }    

08     var minus = '';    

09     if(i < 0) { minus = '-'; }    

10     i = Math.abs(i);    

11     var n = new String(i);    

12     var a = [];    

13     while(n.length > 3)    

14     {    

15         var nn = n.substr(n.length-3);    

16         a.unshift(nn);    

17         n = n.substr(0,n.length-3);    

18     }    

19     if(n.length > 0) { a.unshift(n); }    

20     n = a.join(delimiter);    

21     if(d.length < 1) { amount = n; }    

22     else { amount = n + '.' + d; }    

23     amount = minus + amount;    

24     return amount;    

25 }    

26       

27 /**   

28 *   Usage:  CommaFormatted(12345678);   

29 *   result: 12,345,678   

30 **/   
代码2:  
view sourceprint?  
01 function addCommas(nStr) {    

02     nStr += '';    

03     var x = nStr.split('.');    

04     var x1 = x[0];    

05     var x2 = x.length >; 1 ? '.' + x[1] : '';    

06     var rgx = /(d+)(d{3})/;    

07           

08     while (rgx.test(x1)) {    

09         x1 = x1.replace(rgx, '$1' + ',' + '$2');    

10     }    

11           

12     return x1 + x2;    

13 }    

14       

15 /**   

16 *   Usage:  addCommas(12345678);   

17 *   result: 12,345,678   

18 **/   

数字格式化,来自PHP  
这段javascript代码功能设计来自PHP的nubmer_format功能。能够四舍五入并且加入逗号分隔。而且可以自定义10进制分隔。  
view sourceprint?  
01 function number_format (number, decimals, dec_point, thousands_sep) {    

02       

03     number = (number + '').replace(/[^0-9+-Ee.]/g, '');    

04     var n = !isFinite(+number) ? 0 : +number,    

05         prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),    

06         sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,    

07         dec = (typeof dec_point === 'undefined') ? '.' : dec_point,    

08         s = '',    

09         toFixedFix = function (n, prec) {    

10             var k = Math.pow(10, prec);    

11             return '' + Math.round(n * k) / k;    

12         };    

13     // Fix for IE parseFloat(0.55).toFixed(0) = 0;    

14     s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');    

15     if (s[0].length > 3) {    

16         s[0] = s[0].replace(/B(?=(?:d{3})+(?!d))/g, sep);    

17     }    

18     if ((s[1] || '').length < prec) {    

19         s[1] = s[1] || '';    

20         s[1] += new Array(prec - s[1].length + 1).join('0');    

21     }    

22     return s.join(dec);    

23 }    

24       

25 /**   

26 *   Usage:  number_format(123456.789, 2, '.', ',');   

27 *   result: 123,456.79   

28 **/   

添加一个英文的排序后缀   
view sourceprint?  
01 Number.prototype.toOrdinal = function() {    

02     var n = this % 100;    

03     var suffix = ['th', 'st', 'nd', 'rd', 'th'];    

04     var ord = n < 21 ? (n < 4 ? suffix[n] : suffix[0]) : (n % 10 > 4 ? suffix[0] : suffix[n % 10]);    

05     return this + ord;    

06 }    

07       

08 /*   

09 *   Usage:   

10 *   var myNumOld = 23   

11 *   var myNumNew = myNumOld.toOrdinal()   

12 *   Result: 23rd   

13 */   
除去非数字的字符  
view sourceprint?01 function stripNonNumeric( str )    

02 {    

03   str += '';    

04   var rgx = /^d|.|-$/;    

05   var out = '';    

06   for( var i = 0; i < str.length; i++ )    

07   {    

08     if( rgx.test( str.charAt(i) ) ){    

09       if( !( ( str.charAt(i) == '.' && out.indexOf( '.' ) != -1 ) ||    

10              ( str.charAt(i) == '-' && out.length != 0 ) ) ){    

11         out += str.charAt(i);    

12       }    

13     }    

14   }    

15   return out;    

16 }    

17       

18 /*   

19 *   Usage: stripNonNumeric('123et45dhs6.789');   

20 *   Result: 123456.789   

21 */    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值