2

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

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

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

var wdiscount2 = wdiscount.toFixed(3);

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

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

4

4 回答 4

1

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

例子:

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

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

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

我希望这会有所帮助。

于 2013-02-13T12:43:08.903 回答
1
 var wdiscount2 = wdiscount > 999 ? wdiscount.toFixed(3) : wdiscount;
于 2012-10-12T10:38:26.313 回答
1

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

wdiscount2 = accounting.formatMoney(wdiscount)
于 2012-10-12T10:37:34.347 回答
0

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

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

这是一个示例小提琴

于 2017-10-21T16:50:57.170 回答