ubuntuusers.de

C++ eulersche Zahl

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

wucherpfennig

Avatar von wucherpfennig

Anmeldungsdatum:
30. August 2006

Beiträge: 601

salü

bin gerade ein bisschen am basteln. ich will die eulersche zahl mit

cout.precision()

möglichst genau ausgeben. was ist der beste wert für cout.precision, wenn die zahl ein double ist?

DBL_MAX oder so gibt nichts sinnvolles, ausser DBL_DIG oder DBL_MAX_EXP...

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Probiers doch mit ner Forschleife einfach mal aus.

1
2
3
4
5
double e = 2.71... ;
for(int i = 1; i < 30; i++)
{
  std::cout << std::setprecision(i) << e << std::endl;
}

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

wucherpfennig schrieb:

möglichst genau ausgeben. was ist der beste wert für cout.precision, wenn die zahl ein double ist?

Es gibt keinen besten Wert. Die Zahl ist im Computer im Binärsystem gespeichert, die Ausgabe erfolgt aber im Dezimalsystem, so dass der Nachkomma-Teil u. U. periodisch ist.

phst

Anmeldungsdatum:
24. Juni 2007

Beiträge: 527

Hello World schrieb:

wucherpfennig schrieb:

möglichst genau ausgeben. was ist der beste wert für cout.precision, wenn die zahl ein double ist?

Es gibt keinen besten Wert. Die Zahl ist im Computer im Binärsystem gespeichert, die Ausgabe erfolgt aber im Dezimalsystem, so dass der Nachkomma-Teil u. U. periodisch ist.

Zahlen, die im Binärsystem nicht periodisch sind, sind auch im Dezimalsystem nicht periodisch. Generell gilt: Eine rationale Zahl z/n ist in einem Zahlsystem der Basis b nichtperiodisch, wenn n nur Primfaktoren enthält, die auch in b vorkommen. D.h. im Dezimalsystem sind alle rationalen Zahlen nichtperiodisch, deren Zähler nur 2 und 5 als Primfaktoren enthält, im Binärsystem sind nur die Zahlen nichtperiodisch, bei denen der Zähler eine Zweierpotenz ist. Die im Dezimalsystem nichtperiodischen Zahlen bilden deswegen eine Obermenge der im Binärsystem nichtperiodischen Zahlen.

So weit ich weiß, ist die größte Anzahl signifikanter Stellen für eine 64-Bit-Fließkommazahl im Dezimalsystem 15.

Hello_World

Anmeldungsdatum:
13. Juni 2006

Beiträge: 3620

OK, das wusste ich nicht.

Antworten |