Класс 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
}