Intl.NumberFormatは、言語にともなう数値のフォーマットが整えられるオブジェクトです。

構文

new Intl.NumberFormat([locales[, options]])
Intl.NumberFormat.call(this[, locales[, options]])

引数

locales

省略可能。BCP47言語タグをもつ文字列、またはそのような文字列の配列。locales引数の一般的な形式と解釈については、Intl pageをご参照ください。つぎの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 pageをご参照ください。
style
使用するフォーマットスタイル。使える値は基本の数値フォーマットが"decimal"、通貨フォーマットは"currency"、パーセントのフォーマットには"percent"が選べます。デフォルトは"decimal"です。
currency
使用する通貨のフォーマット。使える値はISO 4217通貨コードで、たとえば"USD"は米国ドル、"EUR"が欧州ユーロ、"CNY"なら中国人民元を示します(「Current currency & funds code list」参照)。デフォルト値はありません。したがって、style"currency"の場合、currencyプロパティは必須です。
currencyDisplay
通貨フォーマットにおける通貨の表示。使える値は3つで、"symbol"が€などの各地域の通貨記号、"code"はISO通貨コード、"name""dollar"のような通貨名を表示します。デフォルトは"symbol"です。
useGrouping
桁区切りを使うかどうか。3桁ごと、あるいはthousands/lakh/croreで区切り文字を加えます。値はtruefalseで、デフォルトはtrueです。

つぎのプロパティはふたつのグループに分かれます。第1に、minimumIntegerDigitsminimumFractionDigitsおよびmaximumFractionDigitsです。第2は、残りのminimumSignificantDigitsmaximumSignificantDigitsになります。第2のグループからプロパティをひとつでも定めると、第1グループは無視されます。

minimumIntegerDigits
整数に使用する最小桁数。使える値は1から21までです。デフォルトは1です。
minimumFractionDigits
小数に使用する最小桁数。使える値は0から20までです。デフォルトは、基本数値とパーセントのフォーマットが1で、通貨フォーマットはISO 4217 currency code listが提供する「minor unit」の桁数(情報のない場合は2)です。
maximumFractionDigits
小数に使用する最大桁数。使える値は0から20までです。デフォルトは、基本数値フォーマットがminimumFractionDigitsか3のうち大きい値で、通貨フォーマットはminimumFractionDigitsISO 4217 currency code listが提供する「minor unit」の桁数(情報のない場合は2)のうち大きい値、パーセントフォーマットではminimumFractionDigitsか0のうち大きい値です。
minimumSignificantDigits
使用する有効数字の最小桁数。使える値は1から21までです。デフォルトは1です。
maximumSignificantDigits
使用する有効数字の最大桁数。使える値は1から21までです。デフォルトはminimumSignificantDigitsの値です。

説明

プロパティ

Intl.NumberFormat.prototype
プロパティをすべてのオブジェクトに加えられます。

メソッド

Intl.NumberFormat.supportedLocalesOf()
提供されたロケールのうち、実行時のデフォルトロケールにフォールバックせずにサポートされるものを配列に納めて返します。

NumberFormatインスタンス

プロパティ

NumberFormatインスタンスは、つぎのプロパティをプロトタイプから継承します。

Intl.NumberFormat.prototype.constructor
Intl.NumberFormatへの参照
Intl.NumberFormat.prototype.format
Gゲッター。ローケルに応じて、このNumberFormatオブジェクトのオプションを持つ数値をフォーマットする関数を返します。

メソッド

NumberFormatインスタンスは、つぎのメソッドをプロトタイプから継承します。

Intl.NumberFormat.prototype.resolvedOptions()
ローケルを反映しているプロパティとオブジェクトの初期化中に計算された照合オプションをもった新しいオブジェクトを返します。

基本的な使い方

ローケルを指定しない基本的な使い方では、デフォルトのローケルとオプションでフォーマットされた文字列が返されます。

var number = 3500;

console.log(new Intl.NumberFormat().format(number));
// → '3,500' 英語(U.S.)ロケールの場合

localesを使う

この例では、地域による数値フォーマットの違いをいくつか紹介します。アプリケーションのユーザーインタフェースで使われた言語フォーマットを得るには、言語(およびフォールバック言語)をlocales引数により指定してください。

var number = 123456.789;

// ドイツではカンマを小数、ピリオドを千単位の区切りに用います
console.log(new Intl.NumberFormat('de-DE').format(number));
// → 123.456,789

// ほとんどのアラビア語圏ではアラビア数字を用います
console.log(new Intl.NumberFormat('ar-EG').format(number));
// → ١٢٣٤٥٦٫٧٨٩

// インドではthousands/lakh/crore区切りが用いられます
console.log(new Intl.NumberFormat('en-IN').format(number));
// → 1,23,456.789

// nu拡張キーにより漢数字などの番号方式が使えます
console.log(new Intl.NumberFormat('zh-Hans-CN-u-nu-hanidec').format(number));
// → 一二三,四五六.七八九

// バリ語のようにサポートされないかもしれない言語を用いる場合は
// フォールバック言語を含めます(つぎの例ではインドネシア語)
console.log(new Intl.NumberFormat(['ban', 'id']).format(number));
// → 123.456,789

optionsを使う

options引数を使うと結果がカスタマイズできます。

var number = 123456.789;

// 通貨フォーマットを用います
console.log(new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' }).format(number));
// → 123.456,79 €

// 日本円にはminor unitがありません
console.log(new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' }).format(number));
// → ¥123,457

// 有効数字を3桁に狭めます
console.log(new Intl.NumberFormat('en-IN', { maximumSignificantDigits: 3 }).format(number));
// → 1,23,000

仕様

仕様 状況 コメント
ECMAScript Internationalization API 1.0 (ECMA-402)
Intl.NumberFormat の定義
標準 初期定義
ECMAScript Internationalization API 2.0 (ECMA-402)
Intl.NumberFormat の定義
標準  
ECMAScript Internationalization API 4.0 (ECMA-402)
Intl.NumberFormat の定義
ドラフト  

ブラウザ実装状況

機能ChromeEdgeFirefoxInternet ExplorerOperaSafari
基本対応24 あり29111510
prototype24 あり29111510
format24 あり29111510
formatToParts631 2 ?58 ? ? ?
resolvedOptions241229111510
supportedLocalesOf24 あり29111510
機能Android webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
基本対応4.426 あり563710 あり
prototype なし26 あり56 ?10 あり
format なし26 あり56 ?10 あり
formatToParts なし631 2 ? ? ? ? なし
resolvedOptions なし26 あり56 ?10 あり
supportedLocalesOf なし26 あり56 ?10 あり

1. Need to set the flag on the commandline via --js-flags

2. From version 63: this feature is behind the harmony-number-format-to-parts runtime flag.

関連情報

ドキュメントのタグと貢献者

このページの貢献者: FumioNonaka, shisama, shide55, Mingun
最終更新者: FumioNonaka,