Comment formater en Java un nombre avec son signe de tête?
Les nombres négatifs sont correctement affichés avec un _ -
, mais les nombres positifs ne sont évidemment pas affichés avec +
.
Comment faire ça en Java? Ma chaîne de format de devise actuelle est \#\#\#,\#\#\#,\#\#\#,\#\#\#,\#\#0.00
(oui, je dois formater des valeurs monétaires positives/négatives)
Utilisez un sous-modèle négatif, comme décrit dans le javadoc pour DecimalFormat .
DecimalFormat fmt = new DecimalFormat("+#,##0.00;-#");
System.out.println(fmt.format(98787654.897));
System.out.println(fmt.format(-98787654.897));
produit (dans mes paramètres régionaux français où l'espace est le séparateur de regroupement et la virgule est le séparateur décimal):
+98 787 654,90
-98 787 654,90
L'API pour Formatter fournit un exemple:
Formatter formatter = new Formatter();
System.out.println(formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E));
//e = +2,7183
J'ai fait:
private NumberFormat plusMinusNF = new DecimalFormat("+#;-#");
Integer newBalance = (Integer) binds.get("newBalance");
bindsForUpdate.put("plusMinus", plusMinusNF.format(newBalance));
qui a formaté des entiers positifs, par exemple 5 à "+5" et entiers négatifs, par exemple -7 à "-7" (comme prévu)
Cela nécessite un petit ajustement du DecimalFormat renvoyé par NumberFormat.getCurrencyInstance () pour le faire de manière indépendante des paramètres régionaux. Voici ce que j'ai fait (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 () peut ne pas retourner une valeur pour tous les paramètres régionaux pour tous les systèmes, mais cela devrait fonctionner pour les principaux (et je pense qu'il a une solution de rechange raisonnable en soi, donc vous ne devriez rien avoir à faire)
Source: Formater le montant négatif d'USD avec un signe moins, pas entre parenthèses (Java)