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

來源:互聯網
上載者:User

來源:GBin1.com

Javascript沒有任何內建的格式化函數,這裡我們通過Google收集了5個javascript的數字格式化函數,希望對於大家的web開發能夠帶來方便。
十進位四捨五入
這兩段代碼協助你做到四捨五入,對於你顯示價格或者訂單比較有用:
代碼1:

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

數字格式化,來自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個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: 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.