setw in Kombination mit setprecision
-
Hallo,
ich habe Schwierigkeiten mit einer formatierten Ausgabe von Fließkommazahlen. Gibt zwar ein Haufen Beispiele im Internet, nur machen die nicht, was ich möchte.
Ich möchte folgende Ausgabe erreichen:
3 doubles in einer Zeile,
3 Stellen vorkomma rechts ausgerichtet + 3 Stellen nachkomma ausgefüllt mit '0', falls weniger Stellen vorhanden.Ich könnte jetzt ca 100 Zeilen Code reinstellen, die Kombinationsversuche welche obiges erreichen sollen aber nicht machen, aber ich hoffe dies wäre nicht hilfreich. Danke.
-
Du meinst so
3.457 123.400 123.457 0.000
?
Dann
double d; cout << setw(7) << fixed << setprecision(3) << d;
(s. a. Ideone-Code)
-
Du hast es nicht nur erfasst, sondern mich auch erlöst
Danke schön.
-
Was fehlte dir denn bei deinen Versuchen? Das
fixed
?
-
Kann ich jetzt eigentlich nicht mehr nachvollziehen. Wahrscheinlich das Verhältnis der Werte von setw() und setprecision(). Jedenfalls kam kein einziger meiner Versuche auch nur in die Nähe dieser Formatierung.
-
Aber jetzt verstehst du die Zahlenwerte?
-
Ich denke schon.
Wenn im obigen Fall setprecision( np = 3 ) ist, muss setw( n = np +4 ) sein, damit man 3 vorkomma + vorzeichen und 3 nachkomma bekommt?
-
Ja, genau: die (Mindest-)Breite bei
setw
ist inklusive des Dezimaltrennzeichens undsetprecision
gibt die Anzahl der Nachkommastellen an. Undfixed
oderscientific
muß man explizit setzen, danone
die Voreinstellung ist (dort bezieht sich dannsetprecision
auf die Anzahl aller dargestellten Ziffern, also Vor- und Nachkommastellen - wahrscheinlich hat dich das dann bei deinen Versuchen verwirrt), s.a. fixed.
-
Joh, da waren dann wohl mehrere Unklarheiten meinerseits. Danke nochmal für die genauere Erläuterung.