Intl.NumberFormat格式不符合预期

时间:2019-10-17 10:30:08

标签: javascript ecmascript-6

我正在尝试使用 Intl.NumberFormat 格式化数字。

我已经检查了MDN WebDocs,但我无法获得我认为它应该返回的响应。

我正在使用西班牙语语言环境进行格式化,我想获得成千上万的点分隔符(使用useGrouping选项),但是,我没有得到

  • 预期结果:1.124,50€
  • 获得的结果:1124,50€

var sNumber = '1124.5'
var number = new Number(sNumber);

let  style = {
            style: 'currency',
            currency: "EUR",
            minimumFractionDigits: 2,
            useGrouping: true
        };

const formatter = new Intl.NumberFormat("es", style);

console.log(formatter.format(number));

1 个答案:

答案 0 :(得分:1)

这似乎是具有4位数字(即1234.56)的西班牙格式器的功能。

看看下面的内容并运行它:

let  style = {
            style: 'currency',
            currency: "EUR",
            minimumFractionDigits: 2,
            useGrouping: true
        };
var formatter = new Intl.NumberFormat("es", style);

console.log('Spanish (ES)');
console.log(formatter.format(1234.56));
console.log(formatter.format(12345.67));
console.log(formatter.format(123456.78));

formatter = new Intl.NumberFormat("de-DE", style);

console.log('German (de-DE)');
console.log(formatter.format(1234.56));
console.log(formatter.format(12345.67));
console.log(formatter.format(123456.78));

您将看到,对于5位及以上的数字,西班牙语格式器确实确实按预期对数字进行了分组。

但是,如果您使用德语格式器(de-DE),它将正确格式化4位数字。

输出:

Spanish (ES)
1234,56 €
12.345,67 €
123.456,78 €

German (de-DE)
1.234,56 €
12.345,67 €
123.456,78 €