Fehler in Schleife?
-
hast du summe den wert 0 zugewiesen, bevor du anfängst mit der variable zu rechnen

-
2.44948974278318 = sqrt(6)
Mach 1/i*i zu einem double, dann geht das auch.Jockel
-
Habs jetzt gemacht. Ändert aber leider nix an meine Prob. Ist noch genauso wie vorher.
-
Ich hab dich 1/ii zu einem double gemacht.
Heißt ja summe = 1/(ii);
Dabei ist ja summe ein double
-
Desert Storm schrieb:
Habs jetzt gemacht. Ändert aber leider nix an meine Prob. Ist noch genauso wie vorher.
Jockelx meinte dies
1.0 / (i * i)Jetzt ist 1.0 eine Gleitpunktzahl.
-
Das weiss dein Kompiler aber zu dem Zeitpunkt leider nicht, was du willst.
Also mach summe + ((double)(1/(i * i))
-
Oder mach es schöner, so wie finix

-
1/(i*i) sollte bei allen i>1 0 ergeben. Bei diser Operation sind nur ints beteiligt, also führt der Compiler auch eine int-Division aus. Du solltest i schon in einen double umwandeln.
1.0/(double(i)*i) sollte schon reichen.
[/edit]Zu spät und bei genaueren Hinsehen reicht Finix Variant auch[edit]
-
Jockelx schrieb:
Also mach summe + ((double)(1/(i * i))
Nutzt auch noch nichts, da der Compiler zuerst die Klammer berechnet und das (Integer-)Ergebnis dann nach double castet.
(1.0 / ((double)i * i)) wäre ok.
@Braunstein: Und warum erzeugst Du ein temporary statt zu casten?

-
Hier wird eigentlich kein temporäres Objekt erzeugt. Das ist AFAIK eine funktionale explizite Typkonvertierung. (Standard 5.2.3 1 oder so?)