Outputvariable formatieren

wie kann ich wenn ich ganz einfach ein double mit cout ausgeben will diesem zB vorgeben nur 2 nachkommastellen anzuzeigen?
und vorallem:
es ist kein problem das double auf 2 nchkommastellen zu runden, nur hätte ich gerne, dass er zB für die zahl 13,5 13,50 schreibt.
…ich hab schon ein bisschen herumgesucht, aber noch nichts gefunden, vielleicht kann mir ja hier jemand helfen.
thx

Hallo,

also ich kenne auch nur die Lösung, die rundet. Eine Zahl auf eine bestimmte Anzahl Nachkommastellen auffüllen geht aber einfach:

#include
cout

hallo!

also: die anzahl der nachkommastellen kann ich mit setprecision nicht wirklich erweitern, sondern nur einschränken (und zwar die gesamtstellenanzahl)

hier mein programm:
// 1.Uebungen Beispiel 1

#include
#include
#include

main()
{
float i,od,os,fd,fs;

cout > i; //input
cout

Hi,

erstmal sorry! War mein Fehler. Du mußt natürlich vorher noch mit

cout.setf(ios_base::fixed,ios_base::floatfield);

in den Fließkommamodus schalten. Ansonsten interpretiert setprecision() den übergebenen Wert als die Gesamtzahl der Ziffern und nicht als die Nachkommastellen. Wenn Du die obige Zeile hinzufügst, sollte es klappen.

Noch eines ist mir aufgefallen: Du verwendest sowohl die als auch die . Man sollte aber nicht .h-Dateien mit den anderen mischen! Das kann Ärger geben. Am besten verwendest Du wenn möglich immer die neueren (ohne .h). D.h. und . Bei gibt’s halt nur die eine.

So, hoffentlich funktioniert mein Tip diesmal ;o).

Matthias Orgler

Hi, danke für deine Bemuehungen aber…

…sorry, vielleicht check ich da irgendwas nicht, das sind ja auch meine ersten versuche in c++, aber mit dieser zeile

cout.setf(ios_base::fixed,ios_base::floatfield);

meint mein compiler:

"In function ‚int main()‘:
12: ‚ios_base‘ undeclared
12:
12: parse error before ‚::‘

?

hi,

da bin ich mir jetzt auch nicht so sicher, aber hast Du die #includes entsprechend vereinheitlicht (wir oben beschreiben)? Mein Compiler (VC++ 6) läßt nämlich eine Mischung aus (mit .h) und (ohne .h) auch nicht durchgehen.
Außerdem mußt Du noch das „using namespace std“ voranstellen, da die Manipulatoren aus der STL kommen und somit alle im Namensbereich std deklariert sind.
Ich hab Dir mal das bei mir lauffähige Testprogramm angehängt:

#include
#include
using namespace std;

int main(int argc, char* argv[])
{
cout.setf(ios_base::fixed,ios_base::floatfield);
cout > c;
while (c!=‚q‘);
return 0;
}

Wie gesagt, das läuft unter meinem VC++ 6.0 ohne Probleme. Laß ich allerdings so wichtige Sachen wie „using namespace std“ weg oder mische die Headerdateien, so schreit der Compiler wie verrückt.
Schau doch einfach mal, ob mein Programm bei Dir läuft. Wenn ja, kopier einfach den Teil vor der „main“ in Deine Datei und es sollte funktionieren.

Matthias Orgler

hi! nun ist es offiziell:
Mein Compiler auf Dein Prog:

zitat anfang

bash-2.02$ g++ test.cc
test.cc: In function int main(int, char \*\*)': test.cc:7: ios_base’ undeclared (first use this function)
test.cc:7: (Each undeclared identifier is reported only once
test.cc:7: for each function it appears in.)
test.cc:7: parse error before `::’
bash-2.02$

zitat ende.

ich verwende den editor und den compiler auf dessen page ich von der site meines univ.prof verlinkt wurde.also

Merke:

ein Cygwin B20 Compiler und/oder ein XEmacs 21.4 (patch 6) Editor sind für dieses Prog(sieheRe^5) ungeeignet.

…aber danke trotzdem
mfg

Hallo,

damit muß ich wohl kapitulieren :o(. Die Klasse ios_base sollte eigentlich zur STL gehören. Ich arbeite zwar mit Microsoft VC++ 6 unter Windows, doch auch der Stroustrup bestätigt mir ios_base. Somit ist Dein Compiler wohl nicht kompatibel mit dem Standard.

Du hast nun zwei Möglichkeiten: Entweder Du versuchst die Definition der von mir verwendeten Flags (fixed und floatfield) irgendwo in den Stream-Klassen Deiner STL zu finden und entsprechend anzugeben, oder aber Du verwendest einen anderen Compiler. Es bleibt natürlich noch eine dritte, wenn auch unschöne, Möglichkeit: Du mußt die Ausgabeformatierung selbst programmieren :o(. Ich würde allerdings eine der ersteren Möglichkeiten vorziehen!

Sorry, daß ich Dir da mit Deinem speziellen Compiler nicht weiterhelfen kann.

Matthias Orgler