Intl.NumberFormatの基本:ロケール対応の数値フォーマット
Intl.NumberFormatが各ロケールで数値をどのようにフォーマットするかを学びます。JavaScriptにおける小数点区切り、桁区切り、基本的な数値フォーマットオプションを理解します。
Intl.NumberFormat
詳細な説明
Intl.NumberFormat:ロケール対応数値の基盤
Intl.NumberFormatは最も頻繁に使用されるIntl APIです。小数点区切り、千の位の区切り、桁の順序をロケール固有の慣例に従って自動的に処理し、数値をフォーマットします。
数値フォーマットがロケールによって異なる理由
地域によって数値の表示方法が異なります:
const num = 1234567.89;
new Intl.NumberFormat('en-US').format(num); // "1,234,567.89"
new Intl.NumberFormat('de-DE').format(num); // "1.234.567,89"
new Intl.NumberFormat('fr-FR').format(num); // "1 234 567,89"
new Intl.NumberFormat('hi-IN').format(num); // "12,34,567.89"
違いに注目してください:
- 英語(米国):カンマで桁区切り、ピリオドで小数点
- ドイツ語:ピリオドで桁区切り、カンマで小数点
- フランス語:細いノーブレークスペースで桁区切り、カンマで小数点
- ヒンディー語(インド):インドの数値体系(ラーキとクローレ)を使用
主要なオプション
new Intl.NumberFormat(locale, {
minimumFractionDigits: 2, // 常に小数点以下2桁を表示
maximumFractionDigits: 2, // 小数点以下2桁を超えない
useGrouping: true, // 千の位の区切りを有効化
signDisplay: 'auto', // 負の数にマイナス記号を表示
});
useGroupingオプション
useGroupingオプションは桁区切りの使用を制御します:
true(デフォルト):ロケール固有の桁区切りを使用false:桁区切りなし"min2":グループに少なくとも2桁ある場合のみ区切る"always":常に桁区切りを使用(ほとんどのロケールでtrueと同じ)
ブラウザサポート
Intl.NumberFormatはすべてのモダンブラウザ(Chrome 24以降、Firefox 29以降、Safari 10以降、Edge 12以降)とNode.js 0.12以降でサポートされています。最も広くサポートされているIntl APIの1つです。
ユースケース
数値フォーマットは、国際的なユーザーに数値を表示するすべてのアプリケーションにとって不可欠です。ECサイトは価格をフォーマットし、分析ダッシュボードはメトリクスを表示し、金融アプリケーションは口座残高を表示します。適切なロケールフォーマットがなければ、ドイツのユーザーが「1,234.56」を約1千として読む可能性があり、アメリカのユーザーは「1.234,56」に混乱するでしょう。Intl.NumberFormatを使用することでこれらの曖昧さが解消されます。