Heim >Backend-Entwicklung >C++ >Warum zeigt „std::cout.precision()' keine nachgestellten Nullen für Gleitkommazahlen an?
std::cout.precision() und nachgestellte Nullen
Das Verständnis der korrekten Verwendung von std::cout.precision() ist von entscheidender Bedeutung bei der Anzeige von Gleitkommazahlen. In diesem Artikel untersuchen wir ein konkretes Beispiel zur Behebung eines unerwarteten Verhaltens.
Anfänglicher Code und Problem
Betrachten Sie den folgenden Code, der versucht, das Ergebnis von anzuzeigen Division zweier Ganzzahlen als Gleitkommazahl:
#include <iostream> #include <stdlib.h> int main() { int a = 5; int b = 10; std::cout.precision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Dieser Code soll voraussichtlich 0,5000 anzeigen, aber stattdessen ist es so druckt 0,5. Diese Diskrepanz entsteht dadurch, dass es sich bei den ursprünglichen Datentypen um Ganzzahlen handelt.
Auflösung: std::fixed Manipulator
Um nachgestellte Nullen für Gleitkommazahlen anzuzeigen, Sie müssen den Manipulator std::fixed an std::cout übergeben. Dieser Manipulator stellt sicher, dass die Dezimaldarstellung die Festkommaschreibweise verwendet und nachgestellte Nullen beibehält.
#include <iostream> #include <stdlib.h> #include <iomanip> int main() { int a = 5; int b = 10; std::cout << std::fixed; std::cout << std::setprecision(4); std::cout << (float)a / (float)b << "\n"; return 0; }
Mit dem std::fixed-Manipulator gibt der Code jetzt korrekt 0,5000 aus. Der Manipulator std::setprecision() bleibt für die Angabe der gewünschten Anzahl an Dezimalstellen verantwortlich.
Das obige ist der detaillierte Inhalt vonWarum zeigt „std::cout.precision()' keine nachgestellten Nullen für Gleitkommazahlen an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!