格式化货币显示货币名称而不是符号

Formatting currencies shows name of currency instead of symbol

我正在这样使用Number.prototype.toLocaleString()

5000.70.toLocaleString('en-AU', {
    style: 'currency',
    currency: 'EUR',
    currencyDisplay: 'symbol',
    useGrouping: true
}) // "EUR 5,000.70"

预期结果是 "5,000.70 €""€5,000.70"

Chrome 中的输出是 "EUR 5,000.70"

如果您阅读 Intl.NumberFormat() specificationcurrencyDisplay 的可能值为:

  • "symbol" 使用本地化的货币符号,例如€,这是默认值,
  • "narrowSymbol" 使用窄格式符号(“$100”而不是“US$100”),
  • "code" 使用 ISO 货币代码,
  • "name" 使用本地化的货币名称,例如 "dollar",

因此,看起来只需将 currencyDisplay 设置为 narrowSymbol 即可实现您想要的效果:

const x = 5000.70.toLocaleString('en-AU', {
    style: 'currency',
    currency: 'EUR',
    currencyDisplay: 'narrowSymbol',
    useGrouping: true
});

console.log(x); // €5,000.70