.toLocaleString()

言語に忠実に沿って、数値を表す文字列を返します。

localesoptions引数を指定して、 言語のフォーマット変換がどのように使用されるべきかと、 関数の振る舞いのカスタマイズとを、アプリケーションに特定させます。 古い実装によっては、localesoptions引数が無視され、 使用されるlocaleと文字列のフォームは実装全体に依存します。

文法

numObj.toLocaleString([locales [, options]])

どのブラウザがlocalesoptionsをサポートするのかを、 「ブラウザ互換性」のセクションと、「例: localesとoptionsの引数がサポートされているかを調査」で確認してください。

Firefox 29に実装されたECMAScript国際化APIは、 locales引数をNumber.toLocaleStringメソッドに追加しました。 もし引数がundefinedであれば、このメソッドはOSによって指定された言語でローカライズされた数字を返し、 それ以前のFirefoxのバージョンでは英語でローカライズされた数字を返します。

この変更は、すぐに修正される可能性のある後方互換に影響を与え、後戻りさせるものとして報告されています。 (bug 999003)(翻訳に自信なし)

引数 説明
locales

BCP47言語タグの文字列、またはそれらの文字列の配列を指定します。 一般的な形式とlocales引数の説明については、 Intlのページを確認してください。 下記のUnicode拡張キーが許可されています。

nu
ナンバリングシステムが使用されます。 可能な値は次の通りです。
"arab"、"arabext"、"bali"、"beng"、"deva"、
"fullwide"、"gujr"、"guru"、"hanidec"、"khmr"、"knda"、
"laoo"、"latn"、"limb"、"mlym"、"mong"、"mymr"、
"orya"、"tamldec"、"telu"、"thai"、"tibt"
options

下記のプロパティの幾つかを、または全てを含むオブジェクトを指定します。

localeMatcher
ロケールをマッチングする際に使用するアルゴリズムを指定します。 指定可能な値は、"lookup"と"best fit"であり、デフォルトは"best fit"です。 この情報については、 Intlのページを確認してください。
style
使用するフォーマットのスタイルを指定します。 指定可能な値は、プレーンな数値フォーマットである"decimal"、 通貨フォーマットである"currency"、パーセントのフォーマットである"percent"があり、 デフォルトは"decimal"です。
currency
通貨("currency")フォーマットで使用する通貨を指定します。 指定可能な値は、USドルは"USD"、ユーロは"EUR"、中国人民元は"CNY"といったISO 4217の通貨コードになります。
Current currency & funds code listを確認してください。 デフォルト値は無く、styleで"currency"を指定したのであれば、 必ずpropertyを指定してください。
currencyDisplay
通貨フォーマットをどのように表示するのかを指定します。 指定可能な値は、€のような通貨シンボルにローカライズするのに使用する"symbol"、 ISOの通貨コードに使用する"code"、"doller"のような通貨名にローカライズするのに使用する"name"があります。 デフォルトは、"symbol"になります。
useGrouping
桁区切り(thousand/lakh/crore)を使用するか否かを指定します。 指定可能な値はtrue、falseで、デフォルトはtrueになります。

下記のプロパティは2つのグループに分けられます。 minimumIntegerDigitsminimumFractionDigits
maximumFractionDigitsが1つのグループ、 minimumSignificantDigitsmaximumSignificantDigitsがもう1つのグループになります。 2つ目のグループから1つでもプロパティが定義されれば、1つ目のグループは無視されます。

minimumIntegerDigits
使用する整数の桁数の、最小数を指定します。 指定可能な値は1~21で、デフォルトは1です。
minimumFractionDigits
使用する小数の桁数の、最小数を指定します。 指定可能な値は0~20で、デフォルトはプレーンな数値とパーセントのフォーマットであれば0が、 通貨フォーマットであれば、ISO 4217の通貨コードリストが提供する、 マイナーユニットの桁数になります。(リストがその情報を提供しなければ、2になります。)
maximumFractionDigits
使用する小数桁の、最大数を指定します。 使用可能な値は、0~20です。 デフォルトは、プレーンな数値フォーマットであれば、 minimumFractionDigitsと3を比較して大きい方の値が採用されます。 通貨フォーマットであれば、minimumFractionDigitsと、 ISO 4217の通貨コードリストが提供するマイナーユニットの桁数を比較して、 大きい方の値が採用されます。(リストが情報を提供しなければ、2になります。) パーセントのフォーマットであれば、 minimumFractionDigitsと0を比較して大きい方の値が採用されます。
minimumSignificantDigits
使用する有効桁数の最小値を指定します。 指定可能な値は1~21で、デフォルト値は1です。
maximumSignificantDigits
使用する有効桁数の最大値を指定します。 指定可能な値は1~21で、 デフォルト値はminimumSignificantDigitsになります。

基本的にロケールを指定しなければ、 デフォルトのオプションとロケールによりフォーマットされた文字列が返されます。

var number = 3500;

// US英語がロケールであれば、 "3,500"を出力
console.log(number.toLocaleString());

例: localesとoptionsの引数がサポートされているかを調査

localesoptions引数は、まだ全てのブラウザにサポートされていません。(訳注:2014年8月現在) これらが実装でサポートされているかを調べるために、 敢えて不正な言語タグを指定してRangeError例外により拒絶されることを確認します。

function toLocaleStringSupportsLocales() {
    var number = 0;
    try {
        number.toLocaleString("i");
    } catch (e) {
        return e​.name === "RangeError";
    }
    return false;
}

localesの使用例

下記は、幾つかのローカライズされた数値フォーマット例になります。 アプリケーションのユーザーインターフェースで使用される言語のフォーマットを取得するには、 その言語(出来れば、フォールバック用の言語も)をlocales引数で特定します。

var number = 123456.789;

// ドイツ語はカンマを小数点区切りに、
// ピリオドを1000の区切りに使用します。
alert(number.toLocaleString("de-DE"));
// → 123.456,789

// 多くのアラビア語を話す国のアラビア語は、
// 実際のアラビア数字を使用します。
alert(number.toLocaleString("ar-EG"));
// → ١٢٣٤٥٦٫٧٨٩

// インドでは、thousands/lakh/crore区切りが使用されます。
alert(number.toLocaleString("en-IN"));
// → 1,23,456.789

// nu拡張キーはナンバリングシステムを要求します。(例: Chinese decimal
alert(number.toLocaleString("zh-Hans-CN-u-nu-hanidec"));
// → 一二三,四五六.七八九

// バリ語のようにサポートされていない可能性のある言語を要求する場合は、
// フォールバック用の言語を含めます。(このケースであれば、インドネシア語)
alert(number.toLocaleString(["ban", "id"]));
// → 123.456,789

optionsの使用例

toLocaleStringによって提供された結果は、options引数を使用してカスタマイズすることが可能です。

var number = 123456.789;

// 通貨フォーマット
alert(number.toLocaleString("de-DE", {style: "currency", currency: "EUR"}));
// → 123.456,79 €

// 日本円はマイナーユニットを使用しません
alert(number.toLocaleString("ja-JP", {style: "currency", currency: "JPY"}))
// → ¥123,457

// 有効桁数を3桁に制限
alert(number.toLocaleString("en-IN", {maximumSignificantDigits: 3}));
// → 1,23,000

パフォーマンス

大きな数値をフォーマットする際は、 NumberFormatオブジェクトを作成し、 提供されるNumberFormat.formatプロパティを使用するのが良いでしょう。

仕様

ブラウザ互換性

デスクトップ
機能 Chrome Firefox
(Gecko)
IE Opera Safari
基本
localesと
options引数
24 29 (29) 11 15 ×
モバイル
機能 Android Chrome for
Android
Firefox
Mobile
IE
Mobile
Opera
Mobile
Safari
Mobile
基本
localesと
options引数
× 26 × × × ×

関連項目

 Back to top

© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.

このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。

  • 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
  • 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
  • MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
  • "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。