Frage von IBAxhascox, 20

C++ Konsolenanwendung mehr Stellen nach dem Komma?

Guten Tag Kann mir jemand sagen wie ich mehr als nur 5 Stellen nach dem Komma anzeigen kann? habe es mit printf und cout (float) versucht aber es geht nicht. Wenn ich statt "float" "long" nehme, wird mein ergebniss verändert oder muss man bei long bei der Ausgabe etwas beachten?

danke schonmal

Antwort
von grtgrt, 20

Du musst die Zahl der Kommastellen, die ausgedruckt werden sollen, im Format mit angeben. 

Hier ein Beispiel:

float x1 = 2.0/3 ;
double x2 = 2.0/3 ;

fprintf( stdout, "\nx1 = %8.7f", x1 );
fprintf( stdout, "\nx2 = %8.7f", x2 );

Im Ausdruck erscheint:

x1 = 0.6666667
x2 = 0.6666667

Wie man sieht, wird sogar korrekt gerundet.

Antwort
von fairytale48, 13

fpintf ist nicht C++-Stil. In C++ ist std::setw(n) und std::setprecision(m)  Lösung deines Problems. Will man z.B. eine Zahl x im fixed-Format mit 16 Zeichen (inkl. führende Leerzeichen) und 10 Stellen nach dem Komma ausgeben:

std::cout<<std::fixed<<std::setw(16)<<std::setprecision(10) <<x<<std::endl;

Man kann auch im wissenschaftlichen Format ausgeben. Da ist z.B. sowas möglich:

std::cout<<std::scientific<<std::setw(16)<<std::setprecision(8) <<x<<std::endl;

Wichtig ist

#include <iostream>
#include <iomanip>

im Kopf deiner h- oder cpp-Quelldatei.

Viel Spaß

Kommentar von IBAxhascox ,

Also der eigentliche Unterschied von der std::cout Version und der fprintf Version ist, dass das eine einfach zu C++ gehört? Gibt es noch andere Unterschiede? fprintf erscheint mir bis jetzt einfacher...

Kommentar von fairytale48 ,

ging mir früher auch so. Aber: cout, cin und cerr ordnen sich in das allgemeine C++-Konzept ein. Z.B. erbt std::cout von der Klasse std::ostream genau wie auch std::ofstream, mit dem man in eine Datei schreiben kann. Es ist somit möglich, Methoden zu schreiben, die es erst einmal offen lassen, ob man in std::cout oder std::ofstream schreibt. Das ist C++. Sobald du das wirklich brauchst, wirst du froh sein, dass es sowas gibt.

Keine passende Antwort gefunden?

Fragen Sie die Community