我希望 es-ES 和 de-DE 语言环境的输出是相同的。 (我让我的西类牙同事查了他的工资单,他确认千后确实有小数)
var number = 1000;
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
console.log(new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(number));
结果:
> "1.000,00 €"
> "1000,00 €"
最佳答案
根据Real Academia Española ,西类牙语的标准形式是将数字分成三个一组,用空格分隔,如果数字超过四位,即至少五个(来源:https://www.rae.es/dpd/números,第 2.a 节,西类牙语)。
实际上对于五位数的数字,您的代码给了我与 de-DE
相同的结果和 es-ES
,即用点分隔:
let number2 = 10000
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number2));
console.log(new Intl.NumberFormat('es-ES', { style: 'currency', currency: 'EUR' }).format(number2));
给我10.000,00 €
10.000,00 €
用点分隔似乎并不完全正确*,但未对四位数字进行分组似乎符合 RAE 的语言规则。* 实际上,在德语中,根据 Duden 的说法,您应该使用空格而不是点,参见例如https://www.duden.de/sprachwissen/rechtschreibregeln/zahlen-und-ziffern (在德国)。
关于javascript - intl.NumberFormat 显示 es-ES 货币格式的错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991370/