【问题标题】:Javascript currency formattingJavascript 货币格式
【发布时间】:2012-10-12 10:35:57
【问题描述】:

我有一个讨厌的问题...

我正在使用一个小的 javascript 来格式化货币,例如

2990 到 2.990 和 129900 到 129.900 使用当前行:

var wdiscount2 = wdiscount.toFixed(3);

但是,当我有一个低于 1000 的数字(例如 789)时,它会显示为 0.789

你有办法让我轻松解决这个问题吗?

【问题讨论】:

    标签: javascript formatting currency


    【解决方案1】:

    也许使用库,例如​​来自 Joss Crowcroft 的 accounting.js 是个好主意?它支持各种格式,相信很多人都在使用它。

    wdiscount2 = accounting.formatMoney(wdiscount)
    

    【讨论】:

    • 试过了,这个插件还是有同样的问题
    • 您检查过所有不同的格式选项吗?
    【解决方案2】:
     var wdiscount2 = wdiscount > 999 ? wdiscount.toFixed(3) : wdiscount;
    

    【讨论】:

    • 奇怪,这给了我从 728 到 0.728999999999 的值
    【解决方案3】:

    看起来问题可能已经得到解答,但还有另一种可能很有趣的替代方法,即使用正则表达式。

    示例:

    var num  = 2990;
    var formattedNumber = num.toString().replace(/(\d)(?=(\d{3})(?!\d))/g, "$1.")
    

    几个测试用例(左边num,右边formattedNumber):

    • 2990 => 2.990
    • 129900 => 129.900
    • 789 => 789(这个没有.

    我希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      我发现的最佳解决方案是使用toLocaleString

      const formatCurrency = (num, locale = 'en-US', currency = 'USD', minimumFractionDigits = 2) => {
          if (isNaN(num)) {
              return num;
          }
        return num.toLocaleString(locale, {style: 'currency', currency, minimumFractionDigits});
      };
      

      这是一个例子fiddle

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-24
        • 1970-01-01
        • 2013-01-06
        • 1970-01-01
        相关资源
        最近更新 更多