000
16.01.2006, 16:35 Uhr
predator
|
Hallo!
Mir ist gerade etwas merkwürdiges aufgefallen; folgender Code:
C++: |
#include <iostream>
double round(double zahl, int stellen) { int fac=1; for(int i=0;i<stellen;i++) fac*=10; return static_cast<int>(zahl*fac+0.5)/static_cast<double>(fac); }
int main() { double a; int b; std::cin>>a>>b; std::cout << round(a,b);
return 0; }
|
Mit dem Visual C++ 2005 Express Compiler gibt es keine Probleme, aber als ich es zufälligerweise mit Code::Blocks probiert hab, ist mir ein Fehler aufgefallen, den ich auch unter Linux mit g++(3.3.5) beobachten kann:
Code: |
Eingabe: 2.35 und 1 Ausgabe mit Visual C++ 2005 Express: 2.4 Ausgabe mit g++: 2.3
|
Hat jemand eine Idee woran das liegen könnte? -- Gruß predator
Zitat von Edsger W. Dijkstra: |
Es ist praktisch unmöglich, einem Studenten gutes Programmieren beizubringen, wenn er vorher in BASIC programmiert hat. Als potenzielle Programmierer sind sie geistig verstümmelt ohne Hoffnung auf Erholung.
|
Dieser Post wurde am 16.01.2006 um 16:36 Uhr von predator editiert. |