首页 > 解决方案 > 格式化货币显示货币名称而不是符号

问题描述

我正在这样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"

标签: javascriptnumber-formattingcurrency-formatting

解决方案


如果您阅读Intl.NumberFormat()规范,可能的值为currencyDisplay

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

所以,看起来这是一个设置问题currencyDisplaynarrowSymbol实现你想要的:

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

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


推荐阅读