000
21.01.2008, 23:30 Uhr
~Satru
Gast
|
Hallo, ich habe seit Kurzem angefangen, mich mit C++ zu beschäftigen.
Ich hab ein Programm geschrieben, dass folgende Rechnung ausführt:
(in Worten: Fünf ZweiDrittel minus 117 geteilt durch 33)
Code: |
cout.precision(16); cout<<5+2/3-((117)/(3*11));
|
Zu Meiner Überraschung kam genau 2 raus, obwohl 2,121212121212 rauskommen müsste. Gut, Rundungsfehler dachte ich.
Dann habe ich die Rechnung ein wenig umgestellt:
Code: |
cout.precision(16); long double test,test2,test3,test4; test =5+2/3; test2=117; test3=3*11; test4=test-(test2/test3); cout<<test4;
|
Als Ergebnis für test4 kommt hier 1,454545454545 raus (was für einen Rundungsfehler doch schon ziemlich krass wäre).
Ich habe schon etliche Klammer hinzugefügt und wieder weggenommen, ausdrücke wie 3*11 zusammengefasst, das programm
dauernd neu kompliert, den Variabelntyp zu float bzw Double geändert, usw, aber ohne Veränderung des Ergebnisses. Achja, ich benutze den CodeBlocks-Compiler.
Wo liegt mein Fehler? :>
mfg
Satru |