Comment définir un séparateur de milliers en Java? J'ai la représentation sous forme de chaîne de BigDecimal, je veux définir un séparateur de milliers et renvoyer une chaîne.
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 JavaDoc, la conversion dans la première ligne doit être enregistrée pour la plupart des paramètres régionaux.
Vous pouvez utiliser la fonction de format avec ",";
int no = 124750;
String str = String.format("%,d", no);
//str = 124,750
"," inclut les caractères de regroupement spécifiques aux paramètres régionaux.
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 groupe 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()));
essayez ce code au format 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"
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);
NumberFormat nf = DecimalFormat.getInstance(myLocale);
DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(',');
customSymbol.setGroupingSeparator(' ');
((DecimalFormat)nf).setDecimalFormatSymbols(customSymbol);
nf.setGroupingUsed(true);
La réponse acceptée doit être vraiment modifiée, sinon elle ne fonctionnera pas. GetDecimalFormatSymbols effectue 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: formatter.setDecimalFormatSymbols (symboles);
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));
Si vous utilisez le séparateur de milliers pour le type de données Integer, utilisez 1.
String.format ("%, d\n", 58625) et la sortie sera 58,625
Comme mentionné ci-dessus, le link suivant vous donne le code de pays spécifique permettant à Java de localiser le numéro. Chaque pays a son propre style.
Dans le lien ci-dessus, vous trouverez le code du pays qui doit être placé ici:
...(new Locale(<COUNTRY CODE HERE>));
La Suisse, par exemple, formate les nombres comme suit:
1000.00 -> 1'000.00
Pour cela, suivre codes fonctionne pour moi:
NumberFormat nf = NumberFormat.getNumberInstance(new Locale("de","CH"));
nf.setMaximumFractionDigits(2);
DecimalFormat df = (DecimalFormat)nf;
System.out.println(df.format(1000.00));
Le résultat est comme prévu:
1'000.00