zoukankan      html  css  js  c++  java
  • 分享5个javascript的数字格式化函数

    日期:2011/11/10  来源:GBin1

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

    希望对大家有帮助!

  • 相关阅读:
    Hadoop WordCount改进实现正确识别单词以及词频降序排序
    两个栈实现一个队列
    数据库弱一致性四个隔离级别
    vs2008生成lib文件
    开始整理资料
    基于AKS素性检测的素数生成器
    生成指定位数的随机数
    Windows 7远程桌面 重启 关机 任务管理器 命令
    摩根IT实习经验谈及其他
    Hadoop下进行反向索引(Inverted Index)操作
  • 原文地址:https://www.cnblogs.com/gbin1/p/2244831.html
Copyright © 2011-2022 走看看