was kann ich tun wenn mir der typ cardinal oder longint in delphi nicht ausreicht.
ich müsste mit werten rechnen die bis zu 10^15 gehen.
hat irgendwer eine lösung wie ich das machen könnte.
yours,
geoka
was kann ich tun wenn mir der typ cardinal oder longint in delphi nicht ausreicht.
ich müsste mit werten rechnen die bis zu 10^15 gehen.
hat irgendwer eine lösung wie ich das machen könnte.
yours,
geoka
Hallo,
Folgende Tips zu Deinem Problem kann ich Dir anbieten.
Tip 1: Deine Frage läßt vermuten, daß Du keine Fließkommatypen verwenden kannst oder willst.
Trotzdem solltest Du genauestens überprüfen, ob Du vielleicht nicht doch etwa mit Variablen
vom Typ „SINGLE“ (Wertebereich: 1.5*10^-45 … 3.4*10^38) zum Ziel kommst. Wenn das der
Fall ist, kannst Du Dir eine Menge Arbeit sparen (siehe Tip 3).
Tip 2: Sieh im Handbuch nach, was es mit dem Typ „Currency“ auf sich hat. Das ist *kein*
Fließ-, sondern ein Fixkommatyp mit einer festen Anzahl von Nachkommastellen (4 Stück) und
einem maximalen darstellbaren Wert von 922 337 203 685 477.5807. Das ist nur etwas
weniger als Deine geforderten 10^15. Currencys sind bei Vernachlässigung des Kommas nichts
anderes als 64-Bit-Integer-Werte. Du kannst sie problemlos in echte Fließkommatypen oder
mit den Funktionen Round und Trunc in echte Ganzzahltypen umwandeln.
Tip 3: Du nimmst zwei LongInts (4 Bytes = 32 Bits) und bastelst sie zu einem 64-Bit-Typ
zusammen, den ich „TSuperLongInt“ nennen will:
TYPE TSuperLongInt = ARRAY[0…1] OF LONGINT.
Der Haken dabei: Alles, was man mit Ganzzahltypen anstellen kann (:=, +, –, *, DIV, MOD),
mußt Du für die SuperLongInts „in Handarbeit“ neu progammieren. Ist machbar, aber mit
Arbeit verbunden. Als Basis, um die beiden LongInt-Komponenten miteinander zu verrechnen,
nimmst Du die kleinste Zehnerpotenz, die eine LongInt-Variable darstellen kann, also
1 000 000 000 = 10^9. Eine SuperLongInt-Variable würde dann von Null bis 10^18-1 reichen
(eine SuperSuperLongInt-Variable mit drei LongInt-Komponenten entsprechend von Null bis
10^27-1 usw.). Wenn Du noch mehr dazu wissen willst, schreib mir eine Mail.
Ich hoffe, diese Informationen sind irgendwie nützlich für Dich.
Martin
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hallo,
ich hab zwar keine Ahnung von delphi (ich programmier nur fortran77 und MIDAS), aber der einfachste Trick ist einfach mit den Logarithmen zu rechnen: log10 (10^15) = 15. Das kannst Du dann ja hinterher wieder umrechnen falls n"otig.
Gruss, Gnlwth
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
was kann ich tun wenn mir der typ
cardinal
oder longint in delphi nicht ausreicht.
ich müsste mit werten rechnen die bis zu
10^15 gehen.
hat irgendwer eine lösung wie ich das
machen könnte.yours,
geokaHallo,
ich hab zwar keine Ahnung von delphi (ich
programmier nur fortran77 und MIDAS), aber
der einfachste Trick ist einfach mit den
Logarithmen zu rechnen: log10 (10^15) =
15. Das kannst Du dann ja hinterher wieder
umrechnen falls n"otig.
Gruss, Gnlwth
prinzipiell eine gute idee, nur kann ich nicht viel damit anfangen, da ich die zahlen wenn sie einmal die größe des grössten datentyps übersteigen nicht mehr umrechnen kann.
yours,
geoka
Hi Zusammen!
Ich arbeite grade an einer Rechen-Unit für Pascal. Dafür hab ich auch eine Unit für riesige Ganzzahlen gemacht. Eigentlich beliebig (so viel RAM da is). Schreib mir eine Mail, wennst die anschaun willst. Es werden alle Grundrechnungsarten, Potenz und Fakultät unterstützt.
Sollte in Delphi funktionieren, weil ich es mit FPC-Delphi-Kompatibilitätsmodus gemacht hab.
Bye
Hansi
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]