Dies scheinen eher 5 Fragen als eines zu sein. Wie auch immer:
std::fixed
wird verwendet, um anzuzeigen, dass Sie immer ein Fixpunktformat haben möchten, anstatt wissenschaftliche Notation zu verwenden, bei der diese Notation angemessener ist. Wenn es viele Ziffern benötigt, um den Wert angemessen darzustellen, wechselt das Format die Verwendungx.yyyyyyEee
(Sie können bitten, immer ein wissenschaftliches Format verwendenstd::scientific
).std::setw()
Es ist egal, welcher Wert formatiert ist! Wenn ein Wert formatiert ist und es positiv istout.width()
Setzen Sie, der Ausgang wird mit gepolstertout.fill()
Charakter zumindest seinout.width()
Charaktere breit. Wenn die Ausgabe größer ist alsout.width()
Wie auch immer, es tritt keine Polsterung auf. Nach jedem Ausgangsvorgang [die dauertout.width()
berücksichtigen] dieout.width()
wird zurückgesetzt auf0
(Alle anderen Formatierungsoptionen werden nicht automatisch zurückgesetzt).- Jeder Charakter zählt in Richtung der Breite, einschließlich des Zeichens, Tausenden -Separatoren, Dezimalpunkte usw. Der Dezimalpunkt zählt nicht zur Präzision:
out.precision()
ist die Anzahl der fraktionalen Ziffern (fürstd::fixed
Formatierung) oder die Anzahl der Nicht-Exponent-Ziffern (fürstd::scientific
Formatierung). - Die Breite ist, wie viele Zeichen durch die Ausgabe gefüllt werden. Die Genauigkeit gibt an, wie viele [fraktionale] Ziffern erzeugt werden sollen.
- Binäre schwimmende Punktwerte können nur sehr wenige Dezimalstellen darstellen (für
float
es ist normalerweise 6; Sie können herausfinden, wie viele Ziffern durch Verwendung sicher verwendet werden könnenstd::numeric_limits<float>::digits10
). Der Versuch, mehr Ziffern als diese zu verwendenstd:numeric_limits<float>::digits
setzt). Vielleicht möchten Sie einen Blick sehen Was jeder Informatiker über Gleitkomma-Arithmetik wissen sollte.