Was wenn der Double nicht reicht?

Hallo,
durch eine Multiplikation zweier betraglich sehr großen Zahl bin ich über den Wertebereich hinausgegangen.
Was nun?
Wie kann ich solche große Zahlen speichern und verarbeiten?
Ich brauche nichts so viele Bytes für Nachkommastellen, sonder mehr Bytes für den Exponenten.

Wie löst man das?
Muss ich einen eigenen Datentyp erfinden?

Hallo,

durch eine Multiplikation zweier betraglich sehr großen Zahl
bin ich über den Wertebereich hinausgegangen.
Was nun?
Wie kann ich solche große Zahlen speichern und verarbeiten?
Ich brauche nichts so viele Bytes für Nachkommastellen, sonder
mehr Bytes für den Exponenten.

Wie löst man das?
Muss ich einen eigenen Datentyp erfinden?

Entweder „long double“,

http://en.wikipedia.org/wiki/Long_double
http://www-01.ibm.com/support/docview.wss?rs=2030&ui…
http://www.velocityreviews.com/forums/t552402-long-d…

oder die gmp-Bibliothek verwenden:

http://en.wikipedia.org/wiki/GNU_Multi-Precision_Lib…
http://www.cs.nyu.edu/exact/core/gmp/
http://www.dr-mikes-maths.com/libgmp.html

Grüße

CMБ

Hallo Fragewurm,

durch eine Multiplikation zweier betraglich sehr großen Zahl
bin ich über den Wertebereich hinausgegangen.
Was nun?
Wie kann ich solche große Zahlen speichern und verarbeiten?

Manchmal reicht es die Rechenschritte umzustellen:
(a*b)/c
kann bei (a*b) einen Überlauf erzeugen, was durch
a*(b/c)
verhindert werden kann (Allerdings kann dann ein Unterlauf erzeugt werden).

Des weiteren kann folgendes Programm nochmals etwas andere Resultate liefern:
z = a*b
z/c
Der Grund ist, dass viele FPUs intern z.B. mit 80 Bit rechnen können, aber Variablen nur mit 64 Bit abgespeichert werden.

Wen man weiss was man macht, bzw. was Compiler und CPU machen, kann man manche Probleme umgehen.

Im Gegensatz zur Mathematik, kann ein Prozessor nur innerhalb eines begrenzten Wertebereichs rechnen.
Oft vergisst man dabei, dass auch die temporären Resultate innerhalb dieses Bereichs liegen müssen.

MfG Peter(TOO)

Danke für die Antworten
Danke für eure Antworten.
Hat mir sehr weitergeholfen!