使用Intl.NumberFormat和' de'现场和'百分比'样式

时间:2017-03-27 04:14:38

标签: javascript firefox localization number-formatting

我试图使用Intl.NumberFormat对象来格式化我的用户输入。 在我的javascript项目中,我创建组件并尝试使用它,如下所示;

const simpleFormat = new Intl.NumberFormat('de-DE', {style: 'percent'});

simpleFormat.format(12345678)

它给我的结果 123.456.78%当我期待 123.456,78% 逗号和点。分隔符与相同区域设置的货币样式一起正常工作。但似乎并没有与“百分比”合作。模式。有没有人有这个问题的解决方案?

1 个答案:

答案 0 :(得分:3)

首先,格式化为百分比 12345678 会产生一个字符串 1.234.567.800% 而非“123.456.78%”,这是因为,简单地说,十进制12345678乘以100得到百分比值(这样小数1等于100%)。

您将遇到的另一个问题是 percent 样式默认情况下不会使用任何小数,因此您需要使用maximumFractionDigits选项,以便在需要时使用它们

尽管如此,如果您想要 23.456,78%,您需要:

const simpleFormat = new Intl.NumberFormat('de-DE', {
  style: 'percent',
  maximumFractionDigits: 2,
});
let perc = simpleFormat.format(1234.5678);
console.log(perc);