Brett vorm Kopf
-
Servus. Ich hab grade echt ein Brett vorum Kopf. Ich schreibe ein c++-Programm, das die Reihe 1/(2*1) + 1/(2*2) + 1/(2*3) + ... (Latex hat irgendwie nicht gefunzt) berechnen soll. Mein Code:
#include <cstdlib> #include <iostream> int main () { float erg = 0; for (int i=1;;i++) { erg = (erg + (1/(2*i))); std::cout << erg << endl; } return 0; }Das gibt allerdings immer 0 aus und ich weiß nicht wieso :(. Was ist da los?
-
weil du mit ganzen zahlen rechnest, deine summanden werden einfach auf 0 gerundet... nimm double
-
Ich habe zwar keine Ahnung von der Welt, glaube aber, dass 1 ein int ist und wenn man 1 teilt kommt eine Kommazahl raus => gerundet, weil int => 0.
-
Danke, Problem gelöst!
-
oder einfach 1.0 schreiben
erg = (erg + (1.0/(2*i)));