Mailinglist Archive: opensuse-programming-de (174 mails)

< Previous Next >
Re: long double
  • From: Ferdinand Ihringer <Ferdinand.Ihringer@xxxxxxxx>
  • Date: Sat, 10 Jan 2004 20:20:12 +0100
  • Message-id: <200401102020.12197.Ferdinand.Ihringer@xxxxxxxx>
Am Samstag, 10. Januar 2004 20:02 schrieb Philipp Otte:
> Also so sieht das Programm bisher aus:
> //*** Einzubindende Header ***
> #include <cmath>
> #include <iostream>
>
> //*** Definition des Namespaces ***
> using namespace std;
>
> //*** Definition globaler Variablen ***
>
> //*** Hauptfunktion main()
>
> int main()
> {
> //Definition der Variablen
> unsigned int k;
> long double pi2=1;
> unsigned int n;
> // Abfrage von k
> cout<<"Programm zur Berechnunhg von Pi mit der Methode von
> Wallis"<<endl<<"Wie groß soll k sein?"<<endl;
> cin>>k;
> cout<<k<<endl;
> for (int i=k;i>0;i--)
> {
> n=2*i;
> pi2=pi2*(long double)(n*n)/(long double)(n*n -1);
> cout<<pi2<<endl;
> }
> cout<<"Die Näherung mit k = "<<k<<" für Pi lautet: "<<2*pi2<<endl;
> return 0;
> }
> Und jetzt probiers mal mit k=1000 zu starten.
> Da sind die ersten ca. 20 Ausgaben 1, weil erst danach die Genauigkeit
> von long double erreicht wird.

Das muss an der Ausgabe liegen. k = 15000 hat bei mir die ersten 4 Stellen
richtig und ist genauer als k = 1000. k = 100000 geht nicht mehr mit der
Genauigkeit, aber für die gibt es einige bessere Verfahren. Welche Ausgabe du
stattdessen nehmen solltest, weiß ich nicht. Ich kann kein C++.

Ferdinand


< Previous Next >