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 の定義
ドラフト  

ブラウザ実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 完全対応 4.4Chrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android 完全対応 37Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
prototypeChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
formatChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
formatToParts
実験的
Chrome 完全対応 63
補足 無効
完全対応 63
補足 無効
補足 Need to set the flag on the commandline via --js-flags
無効 From version 63: this feature is behind the harmony-number-format-to-parts runtime flag.
Edge ? Firefox 完全対応 58IE ? Opera ? Safari ? WebView Android 未対応 なしChrome Android 完全対応 63
補足 無効
完全対応 63
補足 無効
補足 Need to set the flag on the commandline via --js-flags
無効 From version 63: this feature is behind the harmony-number-format-to-parts runtime flag.
Edge Mobile ? Firefox Android ? Opera Android ? Safari iOS ? Samsung Internet Android 未対応 なしnodejs ?
resolvedOptionsChrome 完全対応 24Edge 完全対応 12Firefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
supportedLocalesOfChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。
ユーザーが明示的にこの機能を有効にしなければなりません。
ユーザーが明示的にこの機能を有効にしなければなりません。

関連情報

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

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