我有一个讨厌的问题...
我正在使用一个小的 javascript 来格式化货币,例如
2990 到 2.990 和 129900 到 129.900 使用当前行:
var wdiscount2 = wdiscount.toFixed(3);
但是,当我有一个低于 1000 的数字(例如 789)时,它会显示为 0.789
你有办法让我轻松解决这个问题吗?
我有一个讨厌的问题...
我正在使用一个小的 javascript 来格式化货币,例如
2990 到 2.990 和 129900 到 129.900 使用当前行:
var wdiscount2 = wdiscount.toFixed(3);
但是,当我有一个低于 1000 的数字(例如 789)时,它会显示为 0.789
你有办法让我轻松解决这个问题吗?
看起来问题可能已经得到解答,但还有另一种可能很有趣的替代方法,即使用正则表达式。
例子:
var num = 2990;
var formattedNumber = num.toString().replace(/(\d)(?=(\d{3})(?!\d))/g, "$1.")
几个测试用例(num
在左边,formattedNumber
在右边):
2990
=>2.990
129900
=>129.900
789
=> 789
(.
这个没有)我希望这会有所帮助。
var wdiscount2 = wdiscount > 999 ? wdiscount.toFixed(3) : wdiscount;
也许使用一个库,比如来自 Joss Crowcroft 的accounting.js是个好主意?它支持各种格式,我相信很多人都在使用它。
wdiscount2 = accounting.formatMoney(wdiscount)
我发现的最佳解决方案是使用toLocaleString:
const formatCurrency = (num, locale = 'en-US', currency = 'USD', minimumFractionDigits = 2) => {
if (isNaN(num)) {
return num;
}
return num.toLocaleString(locale, {style: 'currency', currency, minimumFractionDigits});
};
这是一个示例小提琴