Intl.NumberFormatによるロケール別通貨フォーマット
Intl.NumberFormatを使用して、任意のロケールと通貨コードの通貨値をフォーマットします。通貨表示モード、シンボルの配置、ロケール固有の通貨慣例について学びます。
Intl.NumberFormat
詳細な説明
ロケール間の通貨フォーマット
通貨フォーマットはIntl.NumberFormatの最も重要な用途の1つです。通貨シンボルの位置、小数桁数、桁区切りスタイルはすべてロケールによって異なります。
基本的な通貨フォーマット
const amount = 1234.5;
new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' })
.format(amount); // "$1,234.50"
new Intl.NumberFormat('ja-JP', { style: 'currency', currency: 'JPY' })
.format(amount); // "¥1,235"(円は小数なし)
new Intl.NumberFormat('de-DE', { style: 'currency', currency: 'EUR' })
.format(amount); // "1.234,50 €"
通貨表示オプション
currencyDisplayオプションは通貨の表現方法を制御します:
const opts = { style: 'currency', currency: 'USD' };
// "symbol"(デフォルト):"$1,234.50"
// "narrowSymbol":"$1,234.50"(狭いシンボルがある場合に使用)
// "code":"USD 1,234.50"
// "name":"1,234.50 US dollars"
ロケール固有の慣例
ロケール間の重要な違い:
- シンボル位置:数値の前(en-US:$100)または後(de-DE:100 €)
- 小数桁:JPYは0桁、ほとんどの通貨は2桁、BHDは3桁
- 負の金額:(USD 100) vs -$100 vs -100 $
- 桁区切り:インドルピーはラーキ区切り(1,23,456.00)を使用
currencySignオプション
new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
currencySign: 'accounting',
}).format(-1234.5); // "($1,234.50)" ("-$1,234.50"ではなく)
accountingサインは負の金額を括弧で囲みます。これは財務報告の標準です。
ユースケース
通貨フォーマットは、ECプラットフォーム、銀行アプリケーション、請求書システム、金額を扱うすべてのソフトウェアにとって重要です。グローバルな顧客にサービスを提供するSaaS製品は、サブスクリプション価格をユーザーのローカルフォーマットで表示する必要があります。決済処理UIは取引金額を正しく表示しなければなりません。国際的な財務報告は複数通貨データを適切なフォーマットで提示する必要があります。