web-dev-qa-db-fra.com

Code de devise en mappage de symbole monétaire

Bonjour, Dans la base de données, il y a un tableau avec les maisons en vente. Pour chaque enregistrement de maison, il existe un champ de code de devise (au format ISO 4217). Est-il possible d'obtenir en quelque sorte le symbole monétaire de ce code afin que je puisse l'utiliser du côté de la présentation?

Je vous remercie. 

P.S. Je tentais de résoudre ce problème en définissant l'objet Currency (créé par Currency.getInstance (currencyCode)) dans la méthode setCurrency DecimalNumberFormat, puis la valeur de format que je devais afficher, mais la valeur mise en forme n'avait toujours pas de symbole monétaire. 

13
artjomka

Vous pouvez utiliser la méthode getSymbol de l'objet Currency.

Le symbole utilisé dépend de la locale utilisée Voir this et this.

Mise à jour, janvier 2016: Les liens sont maintenant morts. Mais ils étaient spécifiques à Java 1.4/5 et n'étaient donc plus vraiment pertinents. Vous trouverez plus de détails sur le formatage monétaire dans https://docs.Oracle.com/javase/tutorial/i18n/format/numberFormat.html . Les liens peuvent être trouvés sur le WayBackEngine cependant.

9
Nivas

@artjomka

J'ai pu reproduire votre problème en définissant mes paramètres régionaux par défaut sur Lettonie

Locale.setDefault(new Locale("lv","LV"));
Currency c  = Currency.getInstance("EUR");
System.out.println(c.getSymbol());

Cela m'a donné la sortie de "EUR".

Cependant, en laissant mes paramètres régionaux sur Uk (déjà ma valeur par défaut), je reçois le symbole de l'euro (€).

Locale.setDefault(Locale.UK);
Currency c  = Currency.getInstance("EUR");
System.out.println(c.getSymbol());
13
Kevin D

Vous pouvez utiliser les classes Currency et DecimalFormat pour répondre à vos besoins. Dans l'exemple suivant, # représente un nombre et ¤ représente un symbole monétaire, vous pouvez trouver les paramètres de format pertinents dans la documentation de l'API Java pour DecimalFormat class.

        Currency currency = Currency.getInstance("USD");

        DecimalFormat decimalFormat = new DecimalFormat("#¤");
        decimalFormat.setCurrency(currency);
        System.out.println(decimalFormat.format(234));
3
Manjula

Vous devez appeler Currency.getSymbol(Locale) plutôt que Currency.getSymbol() (sans objet de paramètres régionaux). La définition des paramètres régionaux par défaut vous donne le comportement souhaité.

1
Delfino

N'ajoutez jamais aveuglément des symboles monétaires (cela suppose que append est la position du symbole monétaire appropriée aux paramètres régionaux). Pratique non dangereuse. Identique avec la chaîne "# ¤" (pour les paramètres régionaux avec symbole de devise préfixe, cela est incorrect)

0
Delfino

Il y a un extrait de code dans https://stackoverflow.com/a/15343675/702345

Mais fais attention:

  • Une devise peut avoir plusieurs symboles. Par exemple: USD a également le symbole "US $" pour Local "es_US" (au moins sur Java8, Win7 sur ma machine virtuelle)
  • Différence Les monnaies peuvent avoir les mêmes symboles, par exemple: USD, AUD
0
brabenetz