Ich habe diese kleine verrückte Methode, die BigDecimal-Werte in schöne und lesbare Strings konvertiert.
private String formatBigDecimal(BigDecimal bd){
DecimalFormat df = new DecimalFormat();
df.setMinimumFractionDigits(3);
df.setMaximumFractionDigits(3);
df.setMinimumIntegerDigits(1);
df.setMaximumIntegerDigits(3);
df.setGroupingSize(20);
return df.format(bd);
}
Es wird jedoch auch ein sogenanntes Gruppentrennzeichen erzeugt ","
, mit dem alle meine Werte wie folgt angezeigt werden:
xxx,xxx
Ich brauche das Trennzeichen als Punkt oder Punkt und nicht als Komma. Hat jemand eine Ahnung, wie man diese kleine Leistung vollbringt?
Ich habe dies und insbesondere dies jetzt zu Tode gelesen, aber ich kann keinen Weg finden, dies zu erreichen. Nähere ich mich dem falsch? Gibt es eine viel elegantere Möglichkeit, dies zu tun? Vielleicht sogar eine Lösung, die unterschiedliche lokale Zahlendarstellungen berücksichtigt, da das Komma nach europäischen Maßstäben perfekt wäre.
java
android
bigdecimal
decimal-point
decimalformat
MiraFayless
quelle
quelle
Antworten:
Sie können das Trennzeichen entweder durch Festlegen eines Gebietsschemas oder mithilfe der DecimalFormatSymbols ändern .
Wenn das Gruppentrennzeichen ein Punkt sein soll, können Sie ein europäisches Gebietsschema verwenden:
Alternativ können Sie die DecimalFormatSymbols-Klasse verwenden, um die Symbole zu ändern, die in den von der Formatierungsmethode erzeugten formatierten Zahlen angezeigt werden. Zu diesen Symbolen gehören unter anderem das Dezimaltrennzeichen, das Gruppentrennzeichen, das Minuszeichen und das Prozentzeichen:
currentLocale kann von Locale.getDefault () bezogen werden, dh:
quelle
String formatString = "#,###,###,##0.00";
siehe docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html für die SyntaxLocale.UK
es zurückkehren wird1,567.90
und nicht 1.567,90NumberFormat.getNumberInstance()
Kann auf einigen Android 7-Geräten ungewöhnlich langsam laufen. Eine Alternative istString.format()
die, die schnell läuft. Siehe stackoverflow.com/questions/2379221/java-currency-number-formatEuropa ist ziemlich groß. Ich bin mir nicht sicher, ob sie überall das gleiche Format verwenden. Doch diese oder diese wird Antwort von Hilfe sein.
Dh das richtige Gebietsschema verwenden.
quelle
quelle
BigDecimal scheint die Einstellungen für das Gebietsschema nicht zu berücksichtigen.
Das slowenische Gebietsschema sollte ein Dezimalkomma haben. Ich schätze, ich hatte seltsame Missverständnisse in Bezug auf Zahlen.
Ich habe einen Teil meiner Nachricht bearbeitet, der keinen Sinn ergab, da er sich als menschliches Versagen herausstellte (ich habe vergessen, Daten festzuschreiben, und habe das Falsche angeschaut).
Das Gleiche wie BigDecimal kann für alle Java .toString () -Funktionen gesagt werden. Ich denke, das ist in gewisser Hinsicht gut. Serialisierung zum Beispiel oder Debugging. Es gibt eine eindeutige Zeichenfolgendarstellung.
Auch wie andere erwähnt, funktioniert die Verwendung von Formatierern in Ordnung. Verwenden Sie einfach Formatierer, genau wie für das JSF-Frontend. Formatierer erledigen die Arbeit ordnungsgemäß und kennen das Gebietsschema.
quelle
quelle