web-dev-qa-db-fra.com

Mettre en forme un nombre avec le signe de tête

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
60
JB Nizet

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
14

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)

7
t3az0r

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)

ageektrapped

Source: Formater le montant négatif d'USD avec un signe moins, pas entre parenthèses (Java)

2
Mohamed Saligh