物の値段やお金に関する数値が大きくなるとよく三桁ごとにカンマ区切りで表示することがあります。 JavaScriptで数値をカンマ区切りにフォーマットするにはtoLocaleStringメソッドを使います。 使い方は簡単で、
Number(123456789).toLocaleString(); //=>123,456,789
です。しかし以下のような場合もあります。
Number(12345.6789).toLocaleString(); //=>"12,345.679" //丸め込まれてしまっている!!
このメソッドはどうもデフォルトでは小数点以下第三桁で丸め込まれてしまうようです。 そこで以下のようにオプション引数を設定することで丸められないでカンマ区切りにすることができます。
Number(12345.6789).toLocaleString( undefined, { maximumFractionDigits: 20 }); //=>"12,345.6789" //20桁まで表示される。
他にも金額の表示なんかも簡単にできます
var price = 123456789 price.toLocaleString('ja-JP', {"style":"currency", "currency":"JPY"}); //=> "¥123,456,789" price.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }); // → "123.456.789,00 €"
IEの特定のバージョンだと上手く機能しないらしいです。Chrome, Safari, Firefoxではきちんと桁数なども含めて表示されます。