c++ Programmierfragen?
Hallo an alle,
ich habe eine Übungsaufgabe, bei welcher ich einen Quelltext vorliegen habe und die exakte Bilschirmausgabe erkennen muss. Ich habe ein Problem, der Anfang ist klar :
18
17
aber warum der Wert dann wieder auf 17 ist in der nächsten Zeile versteht ich nicht ganz.
Meine zweite Frage ist wenn ich den Wert von a ausgebe, welcher als double gespeichert ist müssten doch alle Nachkommastellen erscheinen oder nicht ? Es ändert sich auch nicht wenn ich die Variable als fload oder long oder sonst was speichere.
2 Antworten
Der kleine aber feien Unterschied zwischen Prä(in/de)krement und Post(in/de)krement.
a= ++i - erst inkrementieren, dann zuweisen.
a= i++ erst zuweisen, dann inkrementieren.
zahl ist 17. Bei "num = zahl++" wird 1. der Wert von zahl num zugeweisen, 2. Zahl inkrementiert. Also ist danach num=17 und zahl=18.
Ich sehe den Code nicht, wo du a ausgibst.
"alle Nachkommastellen" können sehr viele sein. ;)
Das Problem ist die interne, binäre Speicherung. Deine Zahl wird gespeichert als
2,123456789000000011213842299184761941432952880859375
Wieviele Stellen davon möchtest du ausgeben?
haha ja alle Nachkommastellen war jetzt etwas unvorsichtig ausgedrückt von mir ;) ich möchte nur wissen warum die zahl double a=2.123456789 bei der ausgabe durch cout << a << endl; auf a= 2,12346 abgeschnitten wird. Ich dachte wenn ich eine Zahl als double anlege das bei dieser dann bis zu 15 Stellen gespeichert werden können?
Stimmt, double ist auf 15 Dezimalstellen genau. Standardmäßig werden aber weniger ausgegeben. Wieviele Stellen du im Code stehen hast, ist zur Laufzeit nicht bekannt. Wenn du eine bestimmte Formatierung möchtest, dann schlage ich die formatierte Konvertierung zu einem String vor der Ausgabe vor.
a wird nur mit
Cout<<a;
Ausgegeben