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


十进制四舍五入

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

代码1:

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

添加逗号

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

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

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

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

除去非数字的字符

01function 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、付费专栏及课程。

余额充值