Ответ 1
Нет, это всегда возвращает точку. ECMA 262-spec [15.7.4.5] указывает, что она должна быть точкой.
Знаете ли вы, что toFixed является локализованной функцией?
Я имею в виду, будет ли это:
var n = 100.67287;
alert(n.toFixed(2));
show " 100.67" на английском языке. ОС Windows/браузеры и " 100,67" (с запятой) на итальянской ОС/браузерах? (Итальянский или любая другая локальная система, которая использует запятую как десятичный разделитель).
Спасибо!
Нет, это всегда возвращает точку. ECMA 262-spec [15.7.4.5] указывает, что она должна быть точкой.
Позднее добавление: с 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()
.
Легко взломать его ограничение.
var num = 0.1;
var decimalSeparator = num.toLocaleString().replace(/\d/g, '');
var numWithLocalizedSeparator = num.toFixed(2).replace('.',decimalSeparator);
Нет печально, нет реального решения в чистом jQuery/JavaScript. Вам понадобится глобализация. Проблема в том, что как toFixed(), так и toLocaleString() принимают число и возвращают строку. Поэтому вы никогда не сможете использовать их вместе.:( Если вы вызываете foo.toFixed(2).toLocaleString(), вы не получите локализацию (т.е. "1.234" в en должен быть "1,234" в fr), потому что он работает с результатом toFixed(), который является строка, а не число.: (
Вы можете использовать это:
var n = 100.67287;
alert(parseFloat(n.toFixed(2)).toLocaleString());
В моей немецкой системе результат
100,67