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

Roo*_*ode 7 javascript formatting culture locale

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

在示例中,213245应格式化为213 245,00

我怎样才能做到这一点?

213245.toFixed(2).toLocaleString(); 
Run Code Online (Sandbox Code Playgroud)

给出213245.00但它应该是213 245,00

然而

213245.toLocaleString()
Run Code Online (Sandbox Code Playgroud)

给出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
Run Code Online (Sandbox Code Playgroud)

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

Álv*_*lez 22

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

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

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

console.log(Number(213245).toLocaleString("es-ES", {minimumFractionDigits: 2}));
Run Code Online (Sandbox Code Playgroud)

这是一个相对较新的添加,因此请务必验证浏览器支持.特别是,某些运行时(如Node.js)默认情况下不包括完整的ICU数据集.