类似问题的答案是不够的。因此,在将此标记为类似问题的副本(例如Proper currency format when not displaying the native currency of a culture)之前,请考虑整个问题。
我希望根据任何区域设置的格式规范正确格式化任何货币。这意味着
换句话说,我不希望仅对数字应用区域设置感知格式,同时重新使用其他区域设置中的货币符号,因为
让我们考虑两个区域,en-US和en-AU,以及两种货币,USD和AUD。我预计“100美元是131澳元”的本地化输出 en-US:100.00美元是131.00澳元 en-AU:USD100.00是$ 131.00
在javascript中,使用Intl.NumberFormat
可以轻松实现let aud = {style: 'currency', currency: 'AUD'};
let usd = {style: 'currency', currency: 'USD'};
let usFormatAUD = new Intl.NumberFormat('en-US', aud);
let usFormatUSD = new Intl.NumberFormat('en-US', usd);
let auFormatAUD = new Intl.NumberFormat('en-AU', aud);
let auFormatUSD = new Intl.NumberFormat('en-AU', usd);
然后
`${usFormatUSD.format(100)} is ${usFormatAUD.format(131)}`
将给出“$ 100.00是A $ 131.00”
`${auFormatUSD.format(100)} is ${auFormatAUD.format(131)}`
将给出“USD100.00是$ 131.00”
根据类似问题的答案建议将NumberFormatInfo.CurrencySymbol从一个区域设置复制到另一个区域设置会导致“$ 100.00 is $ 131.00”,这不保留实际货币的含义。
在类似问题的答案中使用货币代码会导致“USD100.00为AUD131.00”,这是两种语言区域中货币格式不正确的。