La classe CurrencyFormatter transforme les valeurs numériques en chaînes contenant des chaînes de devise et des nombres formatés, conformément aux conventions de paramètres régionaux donnés.
Lorsque vous instanciez un nouvel objet CurrencyFormatter, il définit la devise sur la devise associée par défaut aux paramètres régionaux en vigueur.
L’exemple suivant indique qu’un objet CurrencyFormatter créé à partir de paramètres régionaux allemands part du principe que les montants en devise sont exprimés en euros :
var cf:CurrencyFormatter = new CurrencyFormatter( "de-DE" );
trace(cf.format(1234567.89)); // 1.234.567,89 EUR
Dans la plupart des cas, ne vous fiez pas à la devise associée par défaut aux paramètres régionaux. Si les paramètres régionaux par défaut d’un utilisateur ne sont pas pris en charge, la classe CurrencyFormatter affecte des paramètres régionaux de substitution. Les paramètres régionaux de substitution utilisent parfois une autre devise par défaut. Par ailleurs, les formats en devise doivent généralement sembler corrects à l’utilisateur, même si les montants ne sont pas exprimés dans sa devise locale. Ainsi, un utilisateur canadien peut être amené à afficher les tarifs d’une entreprise allemande en euros, mais formatés dans le style canadien.
La méthode CurrencyFormatter.setCurrency() spécifie la chaîne et le symbole de devise exacts à utiliser.
L’exemple suivant affiche les montants en devise en euros à l’intention des utilisateurs québécois :
var cf:CurrencyFormatter = new CurrencyFormatter( "fr-CA" );
cf.setCurrency("EUR", "€");
trace(cf.format(1234567.89)); // 1.234.567,89 EUR
La méthode setCurrency() permet également de réduire les risques de confusion en définissant des symboles de devise non ambigus. Exemple :
cf.setCurrency("USD","US$");
Par défaut, la méthode format() affiche un code de devise ISO 4217 de trois caractères au lieu du symbole de devise. Les codes ISO 4217 ne sont pas ambigus et ne nécessitent pas de localisation. Un grand nombre d’utilisateurs préfèrent toutefois les symboles de devise aux codes ISO.
La classe CurrencyFormatter peut vous aider à décider du symbole utilisé par une chaîne en devise formatée : un symbole de devise ($ ou €, par exemple) ou une chaîne de devise ISO de trois caractères (USD ou EUR, par exemple). Ainsi, un montant exprimé en dollars canadiens pourrait être affiché sous la forme $200 à l’intention d’un utilisateur qui réside au Canada. Pour un utilisateur qui réside aux Etats-Unis, il pourrait par contre être affiché sous la forme CAD 200. La méthode formattingWithCurrencySymbolIsSafe() permet de déterminer si le symbole de devise d’un montant risque d’être ambigu ou incorrect en fonction des paramètres régionaux de l’utilisateur.
L’exemple suivant affiche une valeur en euros dans un format adapté aux paramètres régionaux en-US. Selon les paramètres régionaux de l’utilisateur, la chaîne sortie contient soit le code de devise ISO, soit le symbole de devise.
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
}