Javascript货币格式

时间:2012-10-12 10:35:57

标签: javascript formatting currency

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

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

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

var wdiscount2 = wdiscount.toFixed(3);

然而,当我有一个低于1000的数字,如789时,它显示为0.789

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

4 个答案:

答案 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

的示例