分享5個javascript的數字格式化函數

來源:互聯網
上載者:User

 

Javascript沒有任何內建的格式化函數,這裡我們通過Google收集了5個javascript的數字格式化函數,希望對於大家的web開發能夠帶來方便。

十進位四捨五入

這兩段代碼協助你做到四捨五入,對於你顯示價格或者訂單比較有用:

代碼1:

function CurrencyFormatted(amount) {

    var i = parseFloat(amount);

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

    var minus = '';

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

    i = Math.abs(i);

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

    i = i / 100;

    s = new String(i);

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

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

    s = minus + s;

    return s;

}

 

/**

*   Usage:  CurrencyFormatted(12345.678);

*   result: 12345.68

**/

代碼2:

function format_number(pnumber,decimals){

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

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

    

    var snum = new String(pnumber);

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

    var whole = parseFloat(sec[0]);

    var result = '';

    

    if(sec.length > 1){

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

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

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

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

        if(dot == -1){

            dec += '.';

            dot = dec.indexOf('.');

        }

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

        result = dec;

    } else{

        var dot;

        var dec = new String(whole);

        dec += '.';

        dot = dec.indexOf('.');   

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

        result = dec;

    } 

    return result;

}

 

/**

*   Usage:  format_number(12345.678, 2);

*   result: 12345.68

**/

添加逗號

這倆段代碼協助你添加逗號到每三位元字中,這讓大的數字比較容易查看。

代碼1:

 

function CommaFormatted(amount) {

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

    amount = new String(amount);

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

    var d = a[1];

    var i = parseInt(a[0]);

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

    var minus = '';

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

    i = Math.abs(i);

    var n = new String(i);

    var a = [];

    while(n.length > 3)

    {

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

        a.unshift(nn);

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

    }

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

    n = a.join(delimiter);

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

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

    amount = minus + amount;

    return amount;

}

 

/**

*   Usage:  CommaFormatted(12345678);

*   result: 12,345,678

**/

代碼2:

function addCommas(nStr) {

    nStr += '';

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

    var x1 = x[0];

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

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

    

    while (rgx.test(x1)) {

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

    }

    

    return x1 + x2;

}

 

/**

*   Usage:  addCommas(12345678);

*   result: 12,345,678

**/

數字格式化,來自PHP

這段javascript代碼功能設計來自PHP的nubmer_format功能。能夠四捨五入並且加入逗號分隔。而且可以自訂10進位分隔。

function number_format (number, decimals, dec_point, thousands_sep) {

 

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

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

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

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

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

        s = '',

        toFixedFix = function (n, prec) {

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

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

        };

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

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

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

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

    }

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

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

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

    }

    return s.join(dec);

}

 

/**

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

*   result: 123,456.79

**/

添加一個英文的排序尾碼

Number.prototype.toOrdinal = function() {

    var n = this % 100;

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

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

    return this + ord;

}

 

/*

*   Usage:

*   var myNumOld = 23

*   var myNumNew = myNumOld.toOrdinal()

*   Result: 23rd

*/

 

除去非數位字元

function stripNonNumeric( str )

{

  str += '';

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

  var out = '';

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

  {

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

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

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

        out += str.charAt(i);

      }

    }

  }

  return out;

}

 

/*

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

*   Result: 123456.789

*/

 

希望對大家有協助!

原文來自:分享5個javascript的數字格式化函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.