Dezimaltrennzeichen bei Ausgabe mit print ändern

tenderfoot

Neues Mitglied
Hallo,

wenn ich
Java:
double d = 0.1;
System.out.println(d);
System.out.printf("%f\n", d);
ausführen lasse, erhalte ich als Ausgabe:
Code:
0.1
0,100000
Kann ich dem println bzw. print auch beibringen als Dezimaltrennzeichen ein Komma statt einem Punkt auszugeben?

Danke!
 
Das mit der Lokalisierung habe ich mir angeschaut und im Prinzip verstanden. Doch die Frage - vielleicht habe ich mich falsch ausgedrückt - war eine andere.

Kann ich die Konfiguration vom System.out so verändern, dass alle KOMMAzahlen via print und printf automatisch immer mit Komma statt Punkt als Dezimaltrennzeichen ausgegeben werden?

Schön wäre es doch, wenn ich sagen könnte: Hey du System.out wir sind hier in GERMANY, wir haben ein anderes Dezimaltrennzeichen deine Programmierer aus dem AMI-Land.

Beispielsweise:
Java:
Locale.setDefault(Locale.GERMANY);
System.out.println(d);

Und das System.out würde dann diese Default-Locale verwenden! Der obige Code funktioniert jedoch nicht, wie gewünscht.

Also, kann ich das System.out generell umkonfigieren oder nicht und wenn ja wie?

Vielen Dank!
 
System.out ist ein PrintStream, der letztlich Double.toString(double) verwendet, welches nicht die Locale-Einstellung beachtet,
die komplexe Korrektur wäre das Setzen eines anderen Streams als System.out,
z.B. einen der das Original weiterverwendet, nur bei double den String auf andere Weise bestimmt,

nebenbei: auf Java-interne Konstruktionen wie
[c]String st = "auto "+doubleVariable+" teuer";[/c]
in einfacher Syntax wirst du aber nie Einfluss nehmen können
 

Zurück
Oben