Comment puis-je obtenir NumberFormat.getCurrencyInstance()
pour imprimer des valeurs de devise négative en USD avec un signe moins?Format de montant négatif de l'USD avec un signe moins, pas entre crochets (Java)
Répondre
est ici que je finis toujours en utilisant soit dans une classe java ou via le FMT: formatNumber tag jstl:
DecimalFormat format = new DecimalFormat("$#,##0.00;$-#,##0.00");
String formatted = format.format(15.5);
Il produit toujours au moins un 0,00 $ et est cohérente lors de l'affichage. Comprend également des séparateurs de milliers si nécessaire. Vous pouvez déplacer le signe moins devant le signe dollar si c'est votre condition.
Il est probablement préférable de créer le vôtre DecimalFormat
si vous voulez un format spécifique plutôt que de se fier au format par défaut.
Edit: Vous pourriez probablement jeter aussi le résultat de NumberFormat.getCurrencyInstance() pour DecimalFormat
et l'adapter à vos préférences.
Il faut un peu peaufiner le DecimalFormat retourné par NumberFormat.getCurrencyInstance()
pour le faire de manière indépendante des paramètres régionaux. Voici ce que je ne (testé sur Android):
DecimalFormat formatter = (DecimalFormat)NumberFormat.getCurrencyInstance();
String symbol = formatter.getCurrency().getSymbol();
formatter.setNegativePrefix(symbol+"-"); // or "-"+symbol if that's what you need
formatter.setNegativeSuffix("");
IIRC, Currency.getSymbol()
ne peut pas retourner une valeur pour tous les paramètres régionaux pour tous les systèmes, mais il faut travailler pour les grands (et je pense qu'il a une solution de repli raisonnable elle-même, de sorte que vous ne devriez pas avoir à faire quoi que ce soit)
Essayez:
NumberFormat.getCurrencyInstance(Locale.CANADA);
NumberFormat.getCurrencyInstance(Locale.UK);
Probablement vous avez raison, mais ma demande devrait être en mesure de f monnaie ormat en mai locales. Ne serait-il pas trop difficile de mettre en œuvre la formation pour tous ces lieux? –