Anfänger mit Riesen Problem - Verstehs net
-
Hey, schreib bald ein Testat in C und hab ne Frage.
Programm:
#include <stdio.h> void main(void) { long n=3, max; double pi = 1.0; printf("\tBerechnung von PI mit Leibniz-Methode\n"); printf("Ganzzahligen Parameter n>>3 eingeben: "); scanf("%li", &max); while(n<max) { [b]pi = pi -1./n + 1./(n+2);[/b] n = n + 4; printf("n = %li: %f\n", n, pi * 4.0); } }
warum muss ich pi = pi -1./n + 1./(n+2) schreiben
und nicht einfach pi = pi -1/n + 1/(n+2) ????Wäre für ne Antwort sehr dankbar
Edit by c.rackwitz: [code] ist lesbarer
-
Dieser Thread wurde von Moderator/in estartu_de aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
TobiS. schrieb:
warum muss ich pi = pi -1./n + 1./(n+2) schreiben
und nicht einfach pi = pi -1/n + 1/(n+2) ????Weil der Compiler bei der zweiten Variante Ganzzahl-Arithmetik anwenden würde - und die schneidet alle NAchkommastellen ab (1 ist eine ganze Zahl, n ist eine ganze Zahl -> wir dividieren ganzzahlig), mit der Angabe "pi = pi - 1./n ..." erklärst du deinem Compiler, daß du hier mit Gleitkomma-Zahlen rechnen willst.
-
TobiS. schrieb:
Hey, schreib bald ein Testat in C und hab ne Frage.
warum muss ich pi = pi -1./n + 1./(n+2) schreiben
und nicht einfach pi = pi -1/n + 1/(n+2) ????Wäre für ne Antwort sehr dankbar
Es hat etwas mit der Problemetik der Ganzen und Flieskommazahlen zu tun.
res = 1/3 ergibt 0 (hier ist '1' eine int)
res = 1.0/3 ergibt 0.333... (hier ist '1.0' eine double)Du solltest diese Thematik in jedem c/c++ Buch auf den ersten paar seiten finden. Good Luck.
PS: oohhh crap, too late.