Korrekte Verwendung von std::cout.precision() zur Anzeige nachgestellter Nullen
Bei der Arbeit mit Gleitkommazahlen in C wird die Die Methode std::cout.precision() ist entscheidend für die Steuerung der Anzahl der angezeigten Dezimalstellen. In bestimmten Fällen stoßen Benutzer jedoch auf unerwartete Ergebnisse, z. B. das Fehlen abschließender Nullen.
Bedenken Sie den folgenden Code:
int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Dieser Code versucht, das Ergebnis der Division zweier Ganzzahlen auszugeben (5 und 10) mit einer Genauigkeit von 4 Dezimalstellen. Allerdings ist die Ausgabe „0,5“ statt der erwarteten „0,5000“.
Der Grund für dieses Verhalten liegt darin, dass die Zahlen „a“ und „b“ zunächst als Ganzzahlen gespeichert werden. Wenn wir die Division durchführen, ist das Ergebnis standardmäßig ebenfalls eine Ganzzahl. Um Gleitkommazahlen korrekt anzuzeigen, müssen wir sie explizit in Gleitkommazahlen umwandeln, wie in der Zeile zu sehen ist:
std::cout << (float)a / (float)b << "\n";
Aber auch nach der Umwandlung in Gleitkommazahlen bleibt das Fehlen nachfolgender Nullen bestehen. Hier kommt der Manipulator std::fixed ins Spiel. Um sicherzustellen, dass nachgestellte Nullen angezeigt werden, müssen wir den Manipulator std::fixed an std::cout übergeben. Dieser Manipulator rundet den Gleitkommawert und zeigt ihn in Festkomma-Notation an.
Der korrigierte Code lautet:
int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Mit der Einbeziehung von std::fixed ist die Ausgabe jetzt korrekt zeigt „0,5000“ an, wobei die angegebene Genauigkeit von 4 Dezimalstellen eingehalten wird.
Das obige ist der detaillierte Inhalt vonWarum zeigt „std::cout.precision()' keine nachgestellten Nullen in Gleitkommazahlen in C an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!