Есть .toLocaleString()
, но, к сожалению, спецификация определяет это как «зависящий от реализации» - я ненавижу, когда они делают это.Таким образом, он ведет себя по-разному в разных браузерах:
var val = 1000000;
alert(val.toLocaleString())
// -> IE: "1,000,000.00"
// -> Firefox: "1,000,000"
// -> Chrome, Opera, Safari: "1000000" (i know, it's the same as toString()!)
Таким образом, вы можете видеть, что на него нельзя положиться, потому что команда ECMA была слишком ленива, чтобы правильно его определить.Internet Explorer лучше всех форматирует его как валюту.Вам лучше с собственной или чьей-либо реализацией .или mine :
(function (old) {
var dec = 0.12 .toLocaleString().charAt(1),
tho = dec === "." ? "," : ".";
if (1000 .toLocaleString() !== "1,000.00") {
Number.prototype.toLocaleString = function () {
var f = this.toFixed(2).slice(-2);
return this.toFixed(2).slice(0,-3).replace(/(?=(?!^)(?:\d{3})+(?!\d))/g, tho) + dec + f;
}
}
})(Number.prototype.toLocaleString);
Протестировано в IE, Firefox, Safari, Chrome и Opera только в моей собственной локали (en-GB).