読者です 読者をやめる 読者になる 読者になる

数値を3桁ごとに区切る

最近のブラウザでは toLocaleString() メソッドが用意されているのでそれを使う。
Number.prototype.toLocaleString が実装されていない場合や、(1).toLocaleString() の結果がなぜか "1.00" になってしまうブラウザでは次の代替関数を用いる。

if (!Number.prototype.toLocaleString || (1).toLocaleString() !== "1") {
	// ja-JP のみ、スタイル指定不可の簡易版
	Number.prototype.toLocaleString = function() {
		if (/e/i.test(String(this))) return String(this); // 指数表現になる場合
		
		var sign = this < 0 ? "-" : ""
		, abs = this < 0 ? -this : this
		, whole = String(Math.floor(abs)).replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")
		, decimals = String(abs).replace(/^[^.]*/, "")
		;
		return sign + whole + decimals;
	};
}