Annäherung Pi < Algorithmen < Schule < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:08 Do 05.12.2013 | Autor: | humalog |
Aufgabe | Betrachten Sie folgende Anweisung im Quelltext:
pi = pi - 1./n + 1./(n + 2);
Quelltext:
#include <stdio.h>
int main(void)
{
long n = 3, max = 0;
double pi = 1.0;
printf("Annaeherung von [mm] PI\n");
[/mm]
printf("Ganzzahligen Parameter n>>3 eingeben: ");
scanf("%li", &max);
while (n < max)
{
pi = pi - 1./n + 1./ (n + 2);
n += 4;
printf("n = %li: [mm] %f\n", [/mm] n, pi*4.0);
}
return 0;
} |
Warum nicht 1/n und 1/(n + 2)? Kann mir jemand erklären warum es ohne 1. nicht funktioniert?
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 15:39 Do 05.12.2013 | Autor: | Ebri |
Hallo
Im Allgemeinen ist es so, teilt man zwei ganze nicht Fließkommazahlen wird eine Ganzzahldivision durchgeführt, z.B. 10/3 = 3. Benutzt man 1./n , was das Gleiche wie 1.0/n ist, wird "normal" dividiert da 1.0 eine Fließkommazahl ist, z.B. 10./3 = 3.3333333333333335 .
1/n liefert für jedes ganze n ungleich 1 oder -1 das Ergebnis 0.
pi = pi - 1/n + 1/(n + 2);
Sollte also immer pi = pi - 0 + 0 = pi sein, da n >= 3. Es passiert also nichts.
Gruß
Ebri
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:51 Do 05.12.2013 | Autor: | humalog |
Super, danke für die schnelle und kompetente Antwort. Du hast mir sehr geholfen.
|
|
|
|