【问题标题】:How do I add a thousand seperator to a number in JavaScript? [duplicate]如何在 JavaScript 中为数字添加千位分隔符? [复制]
【发布时间】:2012-04-02 08:05:02
【问题描述】:

可能重复:
How to format numbers using javascript?

我想在 JavaScript 中为数字添加一千个分隔符,例如 .

1000 -> 1.000
1000000 -> 1.000.000

最优雅的方法是什么?

【问题讨论】:

  • 很多东西,但没有一个真正起作用,所以我认为不值得在这里插入它们。
  • 至少值得一提。这样我们就知道您尝试过但失败了。那么,你尝试了什么? :)
  • How to format numbers using javascript?Format numbers in javascript 的可能重复项。在您提出新问题之前,请使用搜索。

标签: javascript formatting


【解决方案1】:

我不知道优雅...

function addCommas(n){
    var rx=  /(\d+)(\d{3})/;
    return String(n).replace(/^\d+/, function(w){
        while(rx.test(w)){
            w= w.replace(rx, '$1,$2');
        }
        return w;
    });
}

addCommas('123456789456.34');

返回值:(字符串)123,456,789,456.34

【讨论】:

    【解决方案2】:

    试试这样的正则表达式:

    function formatNumber(num)
    {
        return ("" + num).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, function($1) { return $1 + "." });
    }
    
    alert(formatNumber(100000));
    

    ​ 老实说,我在尝试解决您的问题时找到了它here

    【讨论】:

      【解决方案3】:

      您可以使用以下代码来完成这项工作:

      (10000000 + "").split('').reverse().map(function (value, i) {
          return (!(i % 3)) ? "." + value : value;
      }).reverse().join('');
      

      【讨论】:

        【解决方案4】:

        这是一个添加逗号的功能,在这里找到:http://www.mredkj.com/javascript/nfbasic.html

        function addCommas(nStr)
        {
            var sep = ',';
            nStr += '';
            x = nStr.split('.');
            x1 = x[0];
            x2 = x.length > 1 ? '.' + x[1] : '';
            var rgx = /(\d+)(\d{3})/;
            while (rgx.test(x1)) {
                x1 = x1.replace(rgx, '$1' + sep + '$2');
            }
            return x1 + x2;
        }
        

        我稍微修改了代码以添加var sep = ',';,因此您可以根据语言轻松更改分隔符。

        【讨论】:

        • 非常感谢!我将var sep = ','; 更改为var sep = '.'; 并像这样使用它:addCommas(price.toFixed(2).replace('.',',')) 得到这样的格式:3.426,00
        【解决方案5】:

        这是我的看法(只是为了好玩):

        var num = 1000000;
        var cnt = 0; // temp counter. 
        var s = String(num).split('').
                            reverse().
                            map(function(v) { 
                                if (cnt < 2) {
                                    cnt += 1; 
                                    return v;
                                } else {
                                    cnt = 0; 
                                    return ',' + v;
                                }
                            }).
                            reverse().
                            join('');
        // 1,000,000
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-21
          • 2013-09-25
          • 2021-11-17
          • 2013-10-09
          • 2022-12-03
          • 2015-12-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多