分享

分享5个javascript的数字格式化函数

 集微笔记 2013-11-20

Javascript没有任何内建的格式化函数,这里我们通过Google收集了5个javascript的数字格式化函数,希望对于大家的web开发能够带来方便。

十进制四舍五入

这两段代码帮助你做到四舍五入,对于你显示价格或者订单比较有用:

代码1:

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:
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 **/

添加逗号

这俩段代码帮助你添加逗号到每三位数字中,这让大的数字比较容易查看。

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:
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进制分隔。

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 **/

添加一个英文的排序后缀
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 */

除去非数字的字符

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 */ 
原文来自:分享5个javascript的数字格式化函数

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多