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() 方法将显示三个字符的 ISO 4217 货币代码,而不是货币符号。ISO 4217 代码是明确的,不需要本地化。但是,许多用户更喜欢查看货币符号而不是 ISO 代码。
CurrencyFormatter 类可以帮助您决定格式化的货币字符串使用的是一种货币符号(如美元符号或欧元符号),还是三个字符的 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
}