【问题标题】:javascript - Add thousand seperator and retain decimal place [duplicate]javascript - 添加千位分隔符并保留小数位[重复]
【发布时间】:2012-10-21 03:52:36
【问题描述】:

可能重复:
how to print number with commas as thousands separators in Javascript

我有一个函数可以将千位分隔符添加到一个数字中,但是当传入小数时它无法正常工作:

function thousandSep(val) {
        return String(val).split("").reverse().join("")
                      .replace(/(.{3}\B)/g, "$1,")
                      .split("").reverse().join("");
    }

如果我通过了 10000,我得到了预期的 10000。

但是,传入 10,000.00 我得到 1,000,0.00。

如何修改函数来处理小数?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    不要使用.,使用\d

    function thousandSep(val) {
        return String(val).split("").reverse().join("")
                      .replace(/(\d{3}\B)/g, "$1,")
                      .split("").reverse().join("");
    }
    

    【讨论】:

      【解决方案2】:
      function format(n, sep, decimals) {
          sep = sep || "."; // Default to period as decimal separator
          decimals = decimals || 2; // Default to 2 decimals
      
          return n.toLocaleString().split(sep)[0]
              + sep
              + n.toFixed(decimals).split(sep)[1];
      }
      
      format(4567354.677623); // 4,567,354.68
      

      【讨论】:

      • 我喜欢这种方法的简单性!虽然toLocaleString() 可能很有趣......对我来说,它计算的精度不会超过小数点后 3 位(至少在美国的 Chrome 39.0.2171.95 上)。例如,1111.9998 变为“1,112”。所以,如果我从你的代码中使用format(4567354.9998, '.', 4)),我会得到“4,567,355.9998”
      猜你喜欢
      • 2021-04-19
      • 2013-09-25
      • 1970-01-01
      • 2013-09-02
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      相关资源
      最近更新 更多