# Kommazahlen mit Komma in Textfeld darstellen



## Guest (8. Nov 2008)

Hallo, 

ich habe hier ein vermeintlich einfacheres Problem: Ich möchte double-Zahlen in einem Textfeld darstellen. Dadurch wandle ich die Zahl in einen String um und lass sie im Textfeld anzeigen. Double-Werte werden für gewöhnlich mit einem "." dargestellt (also z.B. 21.23). Im Textfeld möchte ich dies aber nun mit einem Komma anzeigen - also ersetze in jedem String dann den Punkt durch ein Komma (also String.replace(".", ",")). Hab ich nun eine Zahl, die größer als 1000 ist, wandle sie in einen String um und ersetze ich wieder jeden Punkt durch ein Komma, so erhalte ich als Ausgabe: 1,233,99 - die ist halt wiederum saublöd, also das erste Komma bei Werten über 1000. Wie bekomme ich es denn hin, dass ich als Ausgabe 1.233,99 erhalte?

Danke


Gruß
Dominik


----------



## Landei (8. Nov 2008)

Eine Variante wäre java.text.DecimalFormat


----------



## Guest (8. Nov 2008)

Wie würde das dann konkret aussehen?


----------



## Landei (9. Nov 2008)

1) Du erzeugst ein DecimalFormat mit der Locale GERMAN (eventuell brauchst du auch einen Patternstring, je nachdem was du willst)
2) defimalFormat.format(myDouble) liefert dir den richtig formatierten String

konkret genug?


----------



## Guest (9. Nov 2008)

Ja, danke schon mal! 
Eine Frage noch: LOCALE German - was ist damit jetzt gemeint und wie mache ich das?


----------



## ARadauer (9. Nov 2008)

double d = 123456.78d;
		DecimalFormat format = new DecimalFormat();
		format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.GERMAN));
		JTextField field = new JTextField();
		field.setText(format.format(d));


----------



## dweiner (10. Nov 2008)

Kann man das DecimalFormat eigentlich mit NumberFormat verbinden? Also wenn ich eine Kommazahl auf 2 Nachkommastellen begrenzen will, dann nehme ich ja "NumberFormat" und davon "MaximumDigits(2). Wenn ich jetzt das oben genannte Problem (also ein Punkt statt einem Komma bei Zahlen über 1000) auch noch lösen will, muss ich doch "DecimalFormat" auch noch mit reinbringen, oder?


----------



## ARadauer (10. Nov 2008)

freilich, du brauchst sie aber nicht verbinden, DecimalFormat erbt bon NumberFormat, du kannst also die Methode einfach benutzen..

java.lang.Object
  java.text.Format
      java.text.NumberFormat
          java.text.DecimalFormat


----------



## ARadauer (10. Nov 2008)

double d = 123456.789d; 
      DecimalFormat format = new DecimalFormat(); 
      format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.GERMAN)); 
      format.setMaximumFractionDigits(2);
      System.out.println(format.format(d));


----------



## Gast (27. Nov 2008)

Hi,

geht das Ganze auch in die andere Richtung?

Beispiel:
Jemand gibt in ein Textfeld eine Zahl mit Komma und Punkt (4.321,08) ein.
Beim normalen Umwandeln (double dZahl = new Double( strZahl ) würde ja eine NumberFormatException kommen. Kann man das mit DecimalFormat umgehen?

Danke und Gruß
Christian


----------



## Leroy42 (27. Nov 2008)

Einfach format.parse(_DeinString_) aufrufen.


----------



## Guest (1. Dez 2008)

Spitze das klappt wunderbar.

Danke!


----------

