Javascript toFixed локализован?

Знаете ли вы, что toFixed является локализованной функцией?

Я имею в виду, будет ли это:

var n = 100.67287;
alert(n.toFixed(2));

show " 100.67" на английском языке. ОС Windows/браузеры и " 100,67" (с запятой) на итальянской ОС/браузерах? (Итальянский или любая другая локальная система, которая использует запятую как десятичный разделитель).

Спасибо!

Ответы

Ответ 1

Нет, это всегда возвращает точку. ECMA 262-spec [15.7.4.5] указывает, что она должна быть точкой.

Ответ 2

Позднее добавление: с Number.toLocaleString() теперь доступно на всех барах IE 10 и ниже, это работает, хотя и довольно длинно:

var n = 100.67287;
alert(n.toLocaleString(undefined, { minimumFractionDigits:2, maximumFractionDigits:2 }));

Подробнее см. developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Number/toLocaleString.

Если вы можете расширить прототип Number, вы можете определить Number.toLocaleFixed().

Ответ 3

Легко взломать его ограничение.

var num = 0.1;
var decimalSeparator = num.toLocaleString().replace(/\d/g, '');
var numWithLocalizedSeparator = num.toFixed(2).replace('.',decimalSeparator);

Ответ 4

Нет печально, нет реального решения в чистом jQuery/JavaScript. Вам понадобится глобализация. Проблема в том, что как toFixed(), так и toLocaleString() принимают число и возвращают строку. Поэтому вы никогда не сможете использовать их вместе.:( Если вы вызываете foo.toFixed(2).toLocaleString(), вы не получите локализацию (т.е. "1.234" в en должен быть "1,234" в fr), потому что он работает с результатом toFixed(), который является строка, а не число.: (

Ответ 5

Вы можете использовать это:

var n = 100.67287;
alert(parseFloat(n.toFixed(2)).toLocaleString());

В моей немецкой системе результат

100,67