Mailinglist Archive: opensuse-programming-de (174 mails)
| < Previous | Next > |
Re: long double
- From: "Alexander Veit" <list@xxxxxxxxxx>
- Date: Sat, 10 Jan 2004 20:43:47 +0100
- Message-id: <200401101942.i0AJgkpM006259@xxxxxxxxxxxxxxxxx>
Philipp Otte schrieb:
> [...]
> 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.
Nein, dies liegt daran, daß Du die Berechnung mit ganzen Zahlen durchführst
(unsigned int n) und erst später nach long double castest.
Versuche es mal so:
for (int i = k; i > 0; i--)
{
long double n = 2 * i;
long double p1 = n / (n - 1);
long double p2 = n / (n + 1);
pi2 = pi2 * p1 * p2;
cout << pi2 << endl;
}
Das Aufspalten des Faktors
n^2 / (n^2 -)
in
n / (n - 1) * n / (n + 1)
erhöht evtl. die Genauigkeit bei großen k.
--
Alex
> [...]
> 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.
Nein, dies liegt daran, daß Du die Berechnung mit ganzen Zahlen durchführst
(unsigned int n) und erst später nach long double castest.
Versuche es mal so:
for (int i = k; i > 0; i--)
{
long double n = 2 * i;
long double p1 = n / (n - 1);
long double p2 = n / (n + 1);
pi2 = pi2 * p1 * p2;
cout << pi2 << endl;
}
Das Aufspalten des Faktors
n^2 / (n^2 -)
in
n / (n - 1) * n / (n + 1)
erhöht evtl. die Genauigkeit bei großen k.
--
Alex
| < Previous | Next > |