Wie setze ich Tausende Trennzeichen in Java?
Ich habe eine String-Darstellung eines BigDecimal, die ich mit einem Tausendertrennzeichen formatieren und als String zurückgeben möchte.
java
bigdecimal
Lustige Zeit
quelle
quelle
Antworten:
Dies sollte funktionieren (ungetestet, basierend auf JavaDoc):
Laut JavaDoc sollte die Besetzung in der ersten Zeile für die meisten Gebietsschemas gespeichert sein.
quelle
getDecimalFormatSymbols()
sagt :Returns: a copy of the desired DecimalFormatSymbols
. Daher sollten SiesetDecimalFormatSymbols(theCopy)
nach dem Ändern der Kopie verwenden.new
und auf Formatierer zurücksetzen:DecimalFormatSymbols customSymbol = new DecimalFormatSymbols();
customSymbol.setDecimalSeparator(decimalSeperator.charAt(0));
customSymbol.setGroupingSeparator(thousandSeperator);
formatter.setDecimalFormatSymbols(customSymbol);
Sie können die Formatierungsfunktion mit "," verwenden.
"," enthält länderspezifische Gruppierungszeichen.
docs
quelle
.
als Trennzeichen verwenden möchte ?format()
mit einem expliziten Gebietsschema auf (Local.US
das bekanntermaßen,
als Trennzeichen verwendet wird) und ersetzen Sie es,
durch Ihr benutzerdefiniertes Trennzeichen :String.format(Locale.US, "%,d", n).replace(',', '.')
.int
. Oder along
. Oder aBigInteger
. Und verwenden Sie f, wenn Sie verwenden möchtendouble
,float
oderBigDecimal
.BEARBEITEN
Gehen Sie folgendermaßen vor, um ein benutzerdefiniertes Gruppentrennzeichen wie z. B. Leerzeichen zu erhalten:
quelle
NumberFormat
Objekt mit den gewünschten Eigenschaften und formatieren damit Ihr ObjektBigDecimal
. A hatBigDecimal
nur einen bestimmten Wert, es hat kein bestimmtes Format.Versuchen Sie diesen Code so zu formatieren, wie er in Brasilien verwendet wird:
quelle
parameters.put("REPORT_LOCALE", new Locale("pt", "BR"));
Senden Sie diesen Parameter an den Bericht.Wenn Sie ein Tausendertrennzeichen für den Datentyp Integer verwenden, verwenden Sie 1.
String.format ("%, d \ n", 58625) und die Ausgabe sind 58.625
quelle
quelle
quelle
Die akzeptierte Antwort muss wirklich geändert werden, sonst funktioniert sie nicht. Die getDecimalFormatSymbols erstellen eine defensive Kopie. So,
Die neue Zeile lautet wie folgt: formatter.setDecimalFormatSymbols (Symbole);
quelle
Für Dezimalstellen :
quelle
Wie oben erwähnt, erhalten Sie über den folgenden Link den spezifischen Ländercode, mit dem Java die Nummer lokalisieren kann. Jedes Land hat seinen eigenen Stil.
Unter dem obigen Link finden Sie den Ländercode, der hier eingegeben werden soll:
Die Schweiz formatiert die Zahlen beispielsweise wie folgt:
1000.00 -> 1'000.00
Landesvorwahl
Um dies zu erreichen, funktionieren folgende Codes für mich:
Ergebnis ist wie erwartet:
quelle
quelle