Achtung C:
Code:
// pi/4= 1-1/3+1/5-1/7+1/9-1/11
#include "stdio.h"
void main()
{
printf("Calculate Pi...\n");
double fQPi = 1;
unsigned int iStep = 0;
double fDiv = 3;
double fOldPi = 0;
double fPi = 1;
while (fOldPi != fPi) // <-- hier 1
{
fOldPi = fPi;
// Berechne Viertel Pi
if (iStep % 2 == 1)
fQPi += 1.L / fDiv;
else
fQPi -= 1.L / fDiv;
fPi = fQPi * 4;
// Nächster Schritt
fDiv += 2;
iStep += 1;
// Text
if (iStep % 10000000 == 0)
printf("%12.0d - %12.0f - Pi ist %18.15f\n", iStep, fDiv, fPi);
}
}
Diese Idee gibt zwar schöne Werte aus. Führt aber anscheinend in endlicher Zeit nicht zum Ende.
Erkenntnis:
15 Stellen Genauigkeit sind in endlicher Zeit nicht zu schaffen.
Achtung: Diese Schleife wird höchst wahrscheinlich kein Ende nehmen.
Zu 1, dort müsste ein Round hin um eine gültige Abbruchbedingung zu erhalten. Maximal 8-10 Nachkommastellen.
@LilKriztina:
Übrignes ich habe C gewählt damit du auch ein wenig grübeln darfst. Ich will ja nicht die Ausaufgaben Prühwarm servieren. Obwohl es fast schon so ist.