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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值