Comment définir un séparateur de milliers en Java?
Comment définir un séparateur de milliers en Java? J'ai une représentation de chaîne de BigDecimal, je veux définir un séparateur de milliers et retourner une chaîne.
97
demandé sur
Funtime
2011-03-16 12:50:31
8 réponses
Cela devrait fonctionner (non testé, basé sur JavaDoc):
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
Selon le JavaDoc, la distribution de la première ligne doit être sauvegardée pour la plupart des paramètres régionaux.
86
répondu
Andreas_D
2015-06-29 11:18:22
BigDecimal bd = new BigDecimal(300000);
NumberFormat formatter = NumberFormat.getInstance(new Locale("en_US"));
System.out.println(formatter.format(bd.longValue()));
Modifier
Pour obtenir un séparateur de regroupement personnalisé tel que l'espace, procédez comme suit:
DecimalFormatSymbols symbols = DecimalFormatSymbols.getInstance();
symbols.setGroupingSeparator(' ');
DecimalFormat formatter = new DecimalFormat("###,###.##", symbols);
System.out.println(formatter.format(bd.longValue()));
44
répondu
adarshr
2011-03-16 10:55:41
Essayez ce code pour le formater tel qu'utilisé au Brésil:
DecimalFormat df = new DecimalFormat(
"#,##0.00",
new DecimalFormatSymbols(new Locale("pt", "BR")));
BigDecimal value = new BigDecimal(123456.00);
System.out.println(df.format(value.floatValue()));
// results: "123.456,00"
12
répondu
dellasavia
2014-01-27 16:01:44
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('|');
formatSymbols.setGroupingSeparator(' ');
String strange = "#,##0.###";
DecimalFormat df = new DecimalFormat(strange, formatSymbols);
df.setGroupingSize(4);
String out = df.format(new BigDecimal(300000).doubleValue());
System.out.println(out);
3
répondu
Dead Programmer
2011-03-16 10:14:56
La réponse acceptée doit être vraiment modifiée sinon ne fonctionne pas. Le getDecimalFormatSymbols fait une copie défensive. Ainsi,
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
formatter.setDecimalFormatSymbols(symbols);
System.out.println(formatter.format(bd.longValue()));
La nouvelle ligne est celle-ci: formateur.setDecimalFormatSymbols (Symboles);
3
répondu
zatziky
2014-06-20 07:05:46
NumberFormat nf = DecimalFormat.getInstance(myLocale);
DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(',');
customSymbol.setGroupingSeparator(' ');
((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol);
nf.setGroupingUsed(true);
3
répondu
Gab
2014-09-29 09:21:10
Pour décimales:
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(' ');
DecimalFormat dfDecimal = new DecimalFormat("###########0.00###");
dfDecimal.setDecimalFormatSymbols(symbols);
dfDecimal.setGroupingSize(3);
dfDecimal.setGroupingUsed(true);
System.out.println(dfDecimal.format(number));
0
répondu
akelec
2017-06-06 13:00:42