我有一个讨厌的问题......
我正在使用小型javascript来格式化货币,例如
2990至2.990和129900至129.900使用当前行:
var wdiscount2 = wdiscount.toFixed(3);
然而,当我有一个低于1000的数字,如789时,它显示为0.789
你有办法轻松解决这个问题吗?
答案 0 :(得分:1)
也许使用库,例如Joss Crowcroft的accounting.js是一个好主意?它支持各种格式,我相信很多人都会使用它。
wdiscount2 = accounting.formatMoney(wdiscount)
答案 1 :(得分:1)
var wdiscount2 = wdiscount > 999 ? wdiscount.toFixed(3) : wdiscount;
答案 2 :(得分: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
(此时没有.
)我希望这会有所帮助。
答案 3 :(得分: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});
};
以下是fiddle
的示例