BigDecimal falsch formatiert bei Locale.GERMANY

Status
Nicht offen für weitere Antworten.

Nimbus

Mitglied
Hallo,

bei der Formatierung eines BigDecimal gibt es ein Problem. Die Zahl kommt ursprünglich aus einer Datenbank, hat daher das Format wie unten (z.B. "3.14"). Ich habe sie per "getString"-Methode geholt, und sie genauso geparst wie den String unten. Sie soll in ein BigDecimal gemappt und entsprechend der Locale formatiert ausgegeben werden. Bei Locale.US z.B. funktioniert das auch, aber bei anderen nicht. Bei Locale.GERMANY habe ich die Ausgabe "314", bei Locale.FRANCE habe ich "3", etc.
Was mache ich falsch?

System: Ubuntu Linux 9.04, Sun Java SE 1.6.0_13-b03

Java:
// BDTest.java

import java.util.Locale;
import java.text.NumberFormat;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.text.ParsePosition;
import java.math.BigDecimal;

public class BDTest {
  public static void main (String[] args) {
    DecimalFormat decfrm = (DecimalFormat)NumberFormat.getInstance(Locale.GERMANY);
    decfrm.setParseBigDecimal(true);
    //DecimalFormatSymbols dfs = new DecimalFormatSymbols (Locale.GERMANY);
    //decfrm.setDecimalFormatSymbols(dfs);
    ParsePosition pos = new ParsePosition(0);
    BigDecimal bd = (BigDecimal)decfrm.parse("3.14", pos);
    System.out.println ("BD: "+bd);
  }

}

Achja: mit dem oben auskommentierten Konstrukt (DecimalFormatSymbols) geht es genausowenig.

Für eure Hilfe schonmal vielen Dank!

Gruss,
Nimbus
 
S

SlaterB

Gast
die Zahl hat einen . statt Komma
nach deutschen Format ist es also 314, daher ist das Parsen zu 314 doch korrekt, was stört dich?

wenn du den . als Komma interpretieren willst, dann solltest du einen englisches Format verwenden, das erparst dir 3.14

danach, wenn du den BigDecimal hast, kannst du gerne überlegen, ihn per deutschen Formatter in den String "3,14" umzuwandeln,
das ist ein separater Schritt mit eigenem Formatter
 

Nimbus

Mitglied
Hallo SlaterB,

Vielen Dank, jetzt klappt es auch!

Ich habe festgestellt, dass die JTable beim Editieren von Zellen schon automatisch nur korrekte Formatierung z.B. von BigDecimal-Zahlen zulässt, wenn das TableModel den Datentyp BigDecimal in der entsprechenden Spalte besitzt. Ich hoffte das irgendwie nutzen zu können, dass man (z.B. für deutsche Nutzer) in der JTable die Zahlen mit Kommata anzeigt, und der Benutzer auch beim Editieren Kommata verwenden kann, bei englischen Nutzern aber z.B. das ganze wie gehabt mit Punkten sein soll, etc. (also dynamisch je nach Locale). Für ein Update der DB muss ich es ja dann wieder im englischen Format haben.
Muss ich mir hierfür einen TableCellEditor basteln, der beim Editieren das ganze rückwärts anwendet, oder geht das irgendwie anders?

Gerade etwas auf dem Schlauch stehend,
Nimbus
 
S

SlaterB

Gast
wenn die JTable BigDecimals in einem bestimmten Format anzeigt, dann kann sie sicherlich auch editierte Werte zurückumwandeln,
ob du aber für den Wechsel in ein anderes Format einen eigenen TableCellEditor brauchst, oder ob eh nach Landeseinstellung das korrekte Format gewählt wird,
kann ich nicht beantworten,

da müsste ich jetzt genausoviel basteln wie du und überlasse dir die Aufgabe selber ;)
(oder wer anders sagt noch was dazu oder du meintest die Frage anders)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Robertop BigDecimal ergänzt unnötige 0 am Ende Allgemeine Java-Themen 6
M Probleme mit BigDecimal Allgemeine Java-Themen 1
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
M float, double, BigDecimal Allgemeine Java-Themen 5
A Ungünstige BigDecimal-Klasse Allgemeine Java-Themen 44
ARadauer BigDecimal und Not a Number Allgemeine Java-Themen 4
R BigDecimal, Position des Kommas Allgemeine Java-Themen 2
J Umstellung von double auf BigDecimal Allgemeine Java-Themen 5
F BigDecimal devide Allgemeine Java-Themen 5
S wiedermal ein kleines Problem mit BigDecimal Allgemeine Java-Themen 5
B BigDecimal Schleifen Allgemeine Java-Themen 9
J BigInteger und BigDecimal im Eclipse-Debugger Allgemeine Java-Themen 3
hdi Probleme beim Rechnen mit BigDecimal Allgemeine Java-Themen 5
S String to BigDecimal Allgemeine Java-Themen 6
N BigDecimal.divide Problem Allgemeine Java-Themen 6
N setscale bigdecimal Allgemeine Java-Themen 3
M String to BigDecimal Allgemeine Java-Themen 7
N BigDecimal formatieren Allgemeine Java-Themen 2
André Uhres BigDecimal in HashSet eingefügt, aber nicht in TreeSet Allgemeine Java-Themen 2
G BigDecimal Rundet falsche Allgemeine Java-Themen 4
T bigdecimal.pow(0.5) Allgemeine Java-Themen 19
0 Keine clone-Methode für BigDecimal und BigInteger? Allgemeine Java-Themen 3
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
berserkerdq2 Kann keine Labels erstellen, was ist hier syntaktisch falsch Allgemeine Java-Themen 5
A was habe ich Falsch gemacht ? Allgemeine Java-Themen 5
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
Y Warum wird das JLabel falsch verschoben? Allgemeine Java-Themen 1
Elyt Compiler-Fehler Datei kann nicht erstellt werden. Die Syntax für den Dateinamen etc. ist falsch. Allgemeine Java-Themen 2
K Vorzeichen falsch Allgemeine Java-Themen 2
R JDK installieren OpenJDK druckt falsch Allgemeine Java-Themen 3
R Verschlüsselung falsch Allgemeine Java-Themen 3
@SupressWarnings() Multilanguaging lädt immer falsch Allgemeine Java-Themen 5
T Umlaute werden falsch gedruckt Allgemeine Java-Themen 2
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
M Google Guice (Assisted Injects) - Buggy oder mach ich's falsch? Allgemeine Java-Themen 5
O Socket Object wird scheinbar falsch empfangen Allgemeine Java-Themen 6
T Ausgabe falsch! Allgemeine Java-Themen 5
_dp Datentypen PriorityQueue sortiert falsch? Allgemeine Java-Themen 6
M Nach Programmdurchlauf werden Zeichen falsch dargestellt + Anderes Verhalten unter Windows Allgemeine Java-Themen 6
R Was ist hier falsch? Abfragen Allgemeine Java-Themen 3
D Zufall wahr bzw. falsch mit zwei Faktoren Allgemeine Java-Themen 10
I For- Schleife falsch? Allgemeine Java-Themen 8
Developer_X Graphic was falsch? Allgemeine Java-Themen 6
T Wurfweitenberechnung: X-Werte bei extremen Werten falsch. Allgemeine Java-Themen 15
R Sting.split() was mache ich falsch? Allgemeine Java-Themen 5
T NetBeans: Ist meine Konfiguration falsch? Allgemeine Java-Themen 7
M Java rechnet falsch? Allgemeine Java-Themen 22
N MathContext rundet falsch? Allgemeine Java-Themen 1
U if Abfrage macht etwas falsch Allgemeine Java-Themen 2
T Pipe-Funktion - Prozente falsch? Allgemeine Java-Themen 8
R Prozente falsch errechnet? Allgemeine Java-Themen 27
TheJavaKid *GGRRR* was mach ich falsch >:( Allgemeine Java-Themen 3
P Was ist denn Bitte falsch? Allgemeine Java-Themen 2
S Was ist hier falsch? Allgemeine Java-Themen 16
M Systemzeit der Java VM geht falsch Allgemeine Java-Themen 4
T Hilfe! Was ist falsch? Allgemeine Java-Themen 7
M Zugriffsberechtigung unter Windows 2000 falsch? Allgemeine Java-Themen 3
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
S Rechner formatiert - nichts geht mehr. Allgemeine Java-Themen 2
M Datum in Tabelle formatiert ausgeben Allgemeine Java-Themen 3
V String formatiert ausgeben ( gleiche Anzahl von Ziffern ) Allgemeine Java-Themen 5
P Datum formatiert ausgeben Allgemeine Java-Themen 6
J (JAVA) Calendar-Objekt formatiert ausgeben Allgemeine Java-Themen 9

Ähnliche Java Themen

Neue Themen


Oben