格式化欧洲格式的数字,带有两位小数

时间:2015-06-11 09:59:23

标签: javascript formatting locale culture

尝试在欧洲文化中将数字格式化为两位小数格式。这样逗号就是十进制分隔符和空格千位分隔符。

例如 213245 应格式化为 213 245,00

我该怎么做?

213245.toFixed(2).toLocaleString(); 

提供 213245.00 ,但应 213 245,00

然而

213245.toLocaleString()

给出 213 245

在下面摆弄:

var out, input;
input = 213245;

// TEST 1
out = input.toFixed(2);   
console.log(out); // 213245.00
out = out.toLocaleString();
console.log(out); // 213245.00

// TEST 2
out = input.toLocaleString();
console.log(out); // 213 245

https://jsfiddle.net/rootnode/8p2vad8u/7/

1 个答案:

答案 0 :(得分:18)

当您使用Number.toFixed()时,您会获得字符串(不再是数字)。出于这个原因,后续调用.toLocaleString()会启动通用Object.toLocaleString()方法,该方法对数字一无所知,而不是您想要的Number.toLocaleString()

看一下文档,我们可以组成这样的东西(在Firefox中测试):

> Number(213245).toLocaleString("es-ES", {minimumFractionDigits: 2});
"213.245,00"

console.log(Number(213245).toLocaleString("es-ES", {minimumFractionDigits: 2}));

这是相对新增加的内容,因此请务必验证browser support。特别是,某些运行时(如Node.js)默认情况下不包含完整的ICU数据集。