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は取引金額を正しく表示しなければなりません。国際的な財務報告は複数通貨データを適切なフォーマットで提示する必要があります。

試してみる — Locale String Tester

フルツールを開く