Heim > Backend-Entwicklung > C++ > Warum zeigt „std::cout.precision()' nachgestellte Nullen nicht wie erwartet an?

Warum zeigt „std::cout.precision()' nachgestellte Nullen nicht wie erwartet an?

Susan Sarandon
Freigeben: 2024-11-11 08:26:02
Original
293 Leute haben es durchsucht

Why Doesn't `std::cout.precision()` Display Trailing Zeros as Expected?

Korrekte Verwendung von std::cout.precision() für die Anzeige der nachgestellten Nullen

Die mit std::cout.precision( angegebene Genauigkeit) ) bestimmt die Anzahl der Dezimalstellen, die bei der Formatierung einer Gleitkommazahl berücksichtigt werden sollen. In einigen Fällen werden nachgestellte Nullen jedoch möglicherweise nicht wie erwartet angezeigt.

Bedenken Sie den folgenden Codeausschnitt:

#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;
}
Nach dem Login kopieren

Dieser Code versucht, das Ergebnis der Division zweier Ganzzahlen als Gleitkomma auszugeben -Kommazahl mit einer Genauigkeit von vier Dezimalstellen. Die Ausgabe zeigt jedoch „0,5“ statt der erwarteten „0,5000“. Dies liegt daran, dass die ganzzahligen Datentypen beim Durchführen der Division implizit in Gleitkommazahlen konvertiert werden, die Genauigkeit jedoch nicht speziell auf die Ganzzahl-in-Fließkomma-Konvertierung angewendet wurde.

Um nachfolgende Nullen korrekt anzuzeigen, ist eine zusätzliche Manipulator, std::fixed, muss mit std::cout: verwendet werden.

#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;
}
Nach dem Login kopieren

Der std::fixed-Manipulator weist an std::cout zur Ausgabe von Gleitkommazahlen in Festkommaschreibweise, einschließlich nachgestellter Nullen. Der Manipulator std::setprecision(4) gibt an, dass die Ausgabe eine Genauigkeit von vier Dezimalstellen haben soll.

Durch die Einbindung des Manipulators std::fixed werden in der Ausgabe des Codeausschnitts nun nachgestellte Nullen korrekt angezeigt, was zur Folge hat in „0,5000“ wie erwartet.

Das obige ist der detaillierte Inhalt vonWarum zeigt „std::cout.precision()' nachgestellte Nullen nicht wie erwartet an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage