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

来源:未知 责任编辑:智问网络 发表时间:2013-09-02 11:47 点击:

 

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的数字格式化函数

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Gb2312转utf-8编码的方法(vbs+js)
    • 如何使用Ajax技术开发Web应用程序(1)
    • js跳转路径问题
    • JavaScript模仿桌面窗口
    • 用js检测两个线段是否相交
    • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
    • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
    • 我是如何去了解jquery的(六),案例之幻灯片轮换
    • Jquery封装幻灯片效果
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1