Hallo, ich arbeite gerade an einer Pi Berechnung in C# es funtzt auch alles wunderbar aber ich soll die genauigkeit ausgeben weiss aber nicht wie!
Habe bis jetzt folgendes:
using System;
namespace Pi_Berechnung
{
/// <summary>
/// Summary description for Class1.
/// </summary>
class Class1
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main(string[] args)
{
while (myPi() == false)
{
Console.WriteLine("Bitte nur Zahlen angeben und nicht null eingeben!!");
}
}
static bool myPi()
{
// Pi Berechnung
//E
Console.WriteLine("Wieviele Stellen sollen exat sein??(Hundertstel = 100, Tausendstel = 1000)");
string stellen_str = Console.ReadLine();
//V
try
{
double stellen = Convert.ToDouble(stellen_str);
if (stellen == 0)
return false;
if (stellen == 10)
{
stellen *=20;
}
stellen *= 10;
int operand = -1;
double nenner = 1;
double pi = 0;
while (nenner <= stellen)
{
if (operand == 1)
pi -= (1/nenner);
else
pi += (1/nenner);
operand *= -1;
nenner += 2;
}
pi *= 4;
//A
Console.WriteLine("Pi ist: {0}", pi);
Console.WriteLine("Mit {0} Reihengliedern", stellen/2);
Console.ReadLine();
return true;
}
catch
{
return false;
}
}
}
}
Hallo fneuweiler.
du berechnest ja eine Folge. Du könntest die beiden letzten Folgenglieder ausgeben. Dann hast du ein Interval, in dem Pi liegen musst und damit gleichzeitig den Fehler.
Oder meinst du auch den Fehler, der durch Rundungsfehler entsteht?
herbivore
Nur der Vollständigkeit halber...
PI gibts auch im Namespace Math (Math.PI)
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Ich will diesen Wert ausrechnen und zwar wenn ich oben 1000 eingebe das es dann auf die tausendstel stelle genau ist!
Hallo fneuweiler,
das tust du doch schon; abgesehen von dem "wenn stellen gleich 10, dann stellen mal 20", was ich nicht verstehe. Ansonsten müsstest du vielleicht noch stellen *= 10; in stellen *= 4; ändern.
herbivore