Heim >Backend-Entwicklung >C++ >Warum zeigt „std::cout.precision()' keine nachgestellten Nullen für Gleitkommazahlen an?

Warum zeigt „std::cout.precision()' keine nachgestellten Nullen für Gleitkommazahlen an?

Susan Sarandon
Susan SarandonOriginal
2024-11-08 21:14:01580Durchsuche

Why Does  `std::cout.precision()` Not Display Trailing Zeros for Floating-Point Numbers?

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!

Stellungnahme:
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