Autor Beitrag
caveman
Hält's aus hier
Beiträge: 3

Win XP Sp1
D4 Prof. / D7 Prof.
BeitragVerfasst: Fr 21.05.04 13:36 
Hallo!

Ich würde gerne mal wissen wie ich in Delphi gewaltig große Integerzahlen bekommen kann, denn ich möchte ein paar 'kleine' mathematische Berechnungen durchführen und brauche dafür einen Datentyp der weit aus mehr als Int64 speichern kann. Der Wertebereich sollte so in etwa von 0..10^200 liegen(wenn's noch größer geht hab ich auf keinen Fall etwas dagegen, denn es kann sein, dass ich es evt noch größer benötige, aber damit könnte ich mich erst einmal zu frieden geben).
Wichtig ist auch, dass ich die Zahl mit einer Kommazahl multiplizieren kann(wird dann aber mit round eh wieder auf integer gebracht), und dass ich bis auf die letzte Stelle genau rechen kann.
Die Performance ist mit primär eigentlich egal, natürlich hab ich gegen eine schnelle Methode nichts einzuwänden, aber eine langsame tut's auch...

So, das waren jetzt ziemlich viele Forderungen an meinen Datentypen, deshalb weiß ich nich ob jemand weiß wie man soetwas realisieren kann?

Für Bemühungen die zur Lösung meines Problems beitragen möchte ich mich schon mal bedanken.

mfg caveman
Ken-san
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 78

WIN: XP, 2000 LINUX: SUSE
Pascal, Delphi 5 Prof, C, C++
BeitragVerfasst: Fr 21.05.04 13:45 
Also erstma guten Tag

Ich hätte da mal eine kleine Frage wie willst du genau rechnen wenn du die komazahlen wegrundest??? naja aber hast du es schonmal mit Double probiert ich weißt nich genau wie groß da der Zahlenbereich liegt aber er ist größer als bei den Integer werten.:twisted:

mfg
Kenny

_________________
SNAFU: Same Normal All f*** Up
caveman Threadstarter
Hält's aus hier
Beiträge: 3

Win XP Sp1
D4 Prof. / D7 Prof.
BeitragVerfasst: Fr 21.05.04 13:59 
unter genau versteh ich lediglich bis zur letzten Stelle VOR dem Komma, der Nachkommaanteil entsteht erst du die Multiplikation, der interessiesrt mich jedoch nicht weiter.
Und ja ich habes es schon mit double probiert, aber laut delphi Hilfe hat double einen Grenzwert von 1.7e+308 und Int64 einen von -2^63..2^63-1 dafür hat double aber auch nur eine Genauigkeit von 15-16 Stellen und das ist zu wenig bei einer Zahl von 1^308.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8549
Erhaltene Danke: 478

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 21.05.04 14:33 
hmm...sehr große Integer Werte? Brauchst du etwa große Primzahlen oder so? Aber wozu dann Multiplikation mit Kommazahlen..naja egal.
Kann sein, dass es z.B. bei Torry Komponenten mit sowas gibt. Ansonsten: Datentyp selber proggen. Vorgehensweise z.B.:
Ein Array anlegen, was so viel Platz bietet (nicht 8Byte wie Int64, sondern meinetwegen 16Byte), wie du brauchst. Und anschliessend alle Operationen die du brauchst (Addieren, Multiplizieren etc.) selber schreiben. Dazu musst du dir natürlich überlegen, wie sich die Werte in dem Array ändern, wenn man zwei solche Arrays miteinander auf die eine oder andere Art verwurstet...Oder wenn man so ein Array mit ner Kommazahl multipliziert.

_________________
We are, we were and will not be.
caveman Threadstarter
Hält's aus hier
Beiträge: 3

Win XP Sp1
D4 Prof. / D7 Prof.
BeitragVerfasst: Fr 21.05.04 16:33 
Also danke für den Tipp, aber bei Torry hab ich nix brauchbares gefunden...na dann werd ich wohl mal versuchen wie du beschrieben hast mir einen eigenen Datentyp zu schreiben...

Trotzdem Danke nochmal an alle!

mfg caveman
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Fr 21.05.04 17:45 
Hallo!

Vielleicht wäre das etwas für Dich. Entweder, um es zu benutzen, oder um daran mitzuwirken.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".