CurrencyFormatter クラスは、特定のロケールの表記規則に従って、数値の形式を、通貨文字列と形式が設定された数字を含む文字列に設定します。
新しい CurrencyFormatter オブジェクトをインスタンス化すると、このオブジェクトにより、通貨は特定のロケールのデフォルトの通貨に設定されます。
次の例では、ドイツ語ロケールを使用して作成された CurrencyFormatter オブジェクトにより、通貨額がユーロであると見なされています。
var cf:CurrencyFormatter = new CurrencyFormatter( "de-DE" );
trace(cf.format(1234567.89)); // 1.234.567,89 EUR
ほとんどの場合、ロケールのデフォルトの通貨に依存しないでください。ユーザーのデフォルトのロケールがサポートされていない場合、CurrencyFormatter クラスは代替ロケールを割り当てます。代替ロケールには、異なるデフォルトの通貨を設定できます。さらに、額がユーザーの地域の通貨でない場合であっても、通貨形式がユーザーに対して正しく表示されるようにしたいと考えるのが通常です。例えば、カナダのユーザーは、ドイツの企業の価格をユーロで表示するが、カナダのスタイルで形式が設定されることを望みます。
CurrencyFormatter.setCurrency() メソッドは、正確な通貨文字列と使用する通貨記号を指定します。
次の例では、カナダのフランス語圏のユーザーに対して、通貨をユーロで表示します。
var cf:CurrencyFormatter = new CurrencyFormatter( "fr-CA" );
cf.setCurrency("EUR", "€");
trace(cf.format(1234567.89)); // 1.234.567,89 EUR
setCurrency() メソッドを使用すると、一義的な通貨記号を設定して混乱を避けることもできます。次に、例を示します。
cf.setCurrency("USD","US$");
デフォルトでは、format() メソッドは、通貨記号の代わりに 3 文字の ISO 4217 通貨コードを表示します。ISO 4217 コードは一義的で、ローカリゼーションの必要はありません。ただし、多くのユーザーは、ISO コードではなく通貨記号を表示することを望みます。
CurrencyFormatter クラスは、形式を設定された通貨文字列で通貨記号(ドル記号、ユーロ記号など)または 3 文字の ISO 通貨文字列(USD、EUR など)のどちらを使用するかを決定するうえで役立ちます。例えば、カナダドルの金額を、カナダのユーザーには $200 と表示できます。一方、米国のユーザーには CAD 200 と表示できます。ユーザーのロケール設定を基にして、額の通貨記号をあいまいまたは不正確にするかどうかを決定するには、formattingWithCurrencySymbolIsSafe() メソッドを使用します。
次の例では、ユーロの値を en-US ロケールの形式に設定します。ユーザーのロケールに応じて、出力文字列は ISO 通貨コードまたは通貨記号を使用します。
var cf:CurrencyFormatter = new CurrencyFormatter( "en-CA");
if (cf.formattingWithCurrencySymbolIsSafe("USD"))
{
trace(cf.format(1234567.89, true)); // $1,234,567.89
}
else
{
cf.setCurrency("USD", "$");
trace(cf.format(1234567.89)); // USD1,234,567.89
}