假设我们有
var number = 123456.789;
我希望以区域设置“de-DE”的方式显示这个数字
123.456,79
作为本地化为'ja-JP'
123,457
作为本地语言环境'en-US'
123,456.79
根据用户的语言环境,等等。问题在于Javascript的number.toLocaleString
需要指定货币符号,而我无法找到如何告诉它根本不显示。
我尝试过的:
number.toLocaleString('de-DE', { style: 'currency' }));
// TypeError: undefined currency in NumberFormat() with currency style
number.toLocaleString('de-DE', { style: 'currency', currency: '' }));
// RangeError: invalid currency code in NumberFormat():
number.toLocaleString('de-DE', { style: 'currency', currency: false }));
// RangeError: invalid currency code in NumberFormat(): false
number.toLocaleString('de-DE', { style: 'currency', currency: null }));
// RangeError: invalid currency code in NumberFormat(): null
该函数还具有选项currencyDisplay
。我尝试了与上述相同的值,但使用currency
选项得到了相同的结果。
更新(2020年11月25日)
一些人指出了.resolvedOptions()
。它基本上解决了这个问题:
const currencyFractionDigits = new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR',
}).resolvedOptions().maximumFractionDigits;
const value = (12345.678).toLocaleString('de-DE', {
maximumFractionDigits: currencyFractionDigits
});
console.log(value); // prints 12.345,68
谢谢。
number.toLocaleString('de-DE')
。 - Giorgio Tempesta