ぬまろぐ

←戻る

javascriptのtoLocaleStringを使い方と注意点

2021/08/29

javascriptで数値にカンマを付ける時にtoLocaleStringを使っていたのですが、いろいろハマったので使い方や注意点をまとめます。

toLocaleStringの使い方

toLocaleStringはNumberオブジェクトの関数で、数値を指定したロケールの文字列に変換してくれる変数です。

基本的には数値に3桁おきにカンマを入れる時に使います。引数なしだとPCのロケールで変換されます。

let num = 12345.67
num.toLocaleString();
>> "12,345.67"

引数でロケールを指定すると、指定のロケールで変換されます。

num.toLocaleString('de-DE'); //ドイツの場合
>> "1.234,56"

オプションを指定して通貨表示などもできます。

num.toLocaleString('ja-JP', { style: 'currency', currency: 'JPY' })
>> "¥1,235"

整数や小数の有効桁数の指定もできます。

num.toLocaleString(undefined, { maximumSignificantDigits: 3 }); //整数の有効桁数
>> "1,230"
let num = 12345.6789
num.toLocaleString(undefined, { maximumFractionDigits: 3 }); //小数の有効桁数
>> "12,345.679"

注意点

toLocaleStringでカンマを付けた後に演算をするとNaNとなる

当たり前ですが、toLocaleStringで変換後は文字列になるため、これを数値として計算するとNaNとなります。(加算は正常に計算されましたが、積算がNaNとなる)

let a = 10000;
a * 2
>> 20000
a.toLocaleString() * 2
>> NaN

デフォルトでは小数が3桁で四捨五入されてしまう

オプションを指定しないと小数が3桁で四捨五入されてしまいます。

let num = 1234.56789;
num.toLocaleString();
>> "1,234.568"

四捨五入しないためには、オプションでmaximumFractionDigitsを多めに指定する必要があります。最大20まで指定できるため、20をしておくと良いでしょう。

let num = 1234.56789;
num.toLocaleString(undefined, { maximumFractionDigits: 20 });
>> "1,234.56789"