%6f = %.6f ???

vjung

Aktives Mitglied
double a = 3
System.out.printf("Achtung: %6f %.6f\n", a, a);

-------------------------------------------
Als Ergebnis wird mir folgendes geliefert:
Achtung: 3,000000 3,000000
-------------------------------------------
Erwartet habe ich jedoch:

Achtung: 3,0 3,000000
 

vjung

Aktives Mitglied
ja der gibt mir somit jedoch nicht 6 Stellen auß, sondern 6 nachkommastellen und insgesamt somit 8 Stellen.
------------------------------------
System.out.printf("%8.2f \n", a);
------------------------------------
gibt ja auch aus:
3.00 (5 Leerzeichen und dann 3,00)
Ergibt ja auch sinn. Somit wären 8 Zeichen belegt und durch .2f werden mir 2 nachkommastellen angezeigt.
Aber warum druckt er die Zahl bei %6f dann nicht auch rechtsbündig und füllt mit nachkommastellen auf. Wieso füllt er mit 0ern in den Nachkommastellen hier auf :/
 

VfL_Freak

Top Contributor
Moin,
System.out.printf("%8.2f \n", a);gibt ja auch aus:
3.00 (5 Leerzeichen und dann 3,00)
Stimmt so nicht ganz! Es sind insgesamt 8 Stellen, also nur 4 Blanks (nicht 5) !!
mit %08.2f wäre es dann 00003,00 !!

Die %-Formatierung ist manchmal etwas undurchsichtig!

Hier mal ein paar Alternativen :
http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/java_zahlenformatierungen_de
http://openbook.rheinwerk-verlag.de...tml#dodtp502391df-4eac-4eb6-a246-312c07a323f4

Gruß Klaus
 

Neue Themen


Oben