NumberFormat不会尊重.toFixed

时间:2015-12-13 10:14:01

标签: javascript number-formatting

我需要这种格式:

555.555.55,55
555.555.55,50 /* Note te extra zero */

我正在尝试这样

new Intl.NumberFormat("es-ES").format(current.toFixed(2));

但这打印出来

555.555.55,5

有什么想法吗?

1 个答案:

答案 0 :(得分:8)

new Intl.NumberFormat("es-ES").format(current.toFixed(2));
                                      ^                ^

current.toFixed(2)的调用将返回string个实例,其中包含2个小数位。

使用字符串实例调用NumberFormat.prototype.format会导致它将字符串转换回数字,然后根据es-ES文化规则对其进行格式化,从而丢失有关固定小数的信息 - 地方格式。

相反,使用指定NumberFormat的{​​{1}}对象实例化options

minimumFractionDigits

如果您要重复使用,请记住缓存new Intl.NumberFormat("es-ES", { minimumFractionDigits: 2 } ).format( current ); 对象,这样您就不会每次都重新创建它。