2015-06-11 2 views
1

Пытается отформатировать формат до двух десятичных знаков в европейской культуре. Таким образом, запятая - разделитель десятичных чисел и разделитель тысяч.Номер форматирования в европейском формате с двумя десятичными знаками

В примере должен быть отформатирован как 213 245,00

Как я могу это сделать?

213245.toFixed(2).toLocaleString(); 

дает 213245,00, но это должно быть 213 245,00

однако

213245.toLocaleString() 

дает

пустячный ниже:

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/

+0

http://stackoverflow.com/questions/6784894/ad d-commas-or-spaces-to-group-every-three-digit – adeneo

+0

Вы уверены, что ваш язык установлен правильно? – feeela

+0

Если вы считаете 213245.toFixed (2) .toLocaleString(); в качестве строки вы можете использовать функцию replace() для замены '.' с ',' – user1929959

ответ

4

При использовании 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 делает это непригодным для текущей всемирной паутины :)

Смежные вопросы