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

Formatting number in European format with two decimals

正在尝试将数字格式化为欧洲文化中的两位小数格式。所以逗号是小数分隔符和 space 千位分隔符。

例如 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/

当你使用Number.toFixed() you obtain a string (not a number any more). For that reason, subsequent calls to .toLocaleString() launch the generic Object.toLocaleString() method that knows nothing about numbers, instead of the Number.toLocaleString()你想要的。

查看文档,我们可以编写如下内容:

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

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

这是一个相对的新增内容,因此请务必确认browser support, but it's been working in Firefox and Chrome-like browsers for a few years now. In particular, some runtimes like Node.js默认情况下不包含完整的 ICU 数据集。