![]() |
LongInt zu kurz | array multiplizieren ?
Hallo,
ich möchte die Zahlenfolge 1,2,4,8,16,32,64,128,256 ... bis zur Zahl 9.999.999.999.999 generieren und in einer Listbox ausgeben das Problem ist das diese Zahl zu lang/groß für einen integer oder longint ist also habe ich an einen Array
Delphi-Quellcode:
gedacht wo ich dann die Zahl Ziffer für Ziffer speichere
array [1..13] of Integer
Bis jetzt hab ich
Delphi-Quellcode:
mein Problem ist einen Integer kann ich mit 2 Multiplizieren wie mache ich das mit einem Array
procedure TForm1.Button1Click(Sender: TObject);
var i :longint; begin i := 1 ; While i < 9999999999999 do begin Listbox1.Items.Add(inttostr(i)); i := i * 2 ; Listbox1.Refresh ; If i = 0 then begin showmessage('error'); exit ; end; end; end; Gruß Chrstian |
AW: LongInt zu kurz | array multiplizieren ?
Gibt ja auch fertige BigInt Lösungen, aber wenn Du es mit dem Array lösen willst (Array of Byte würde ja reichen)
Ganz grob: Jede Dezimal-Stelle (also jeden Array-Wert) einfach mit 2 multiplizieren. Von klein nach großer Stelle. DIV 10 zu größerer Stelle übertragen, MOD 10 behalten.
Code:
Der Einfachheit halber erst alle Array-Elemente multiplizieren (mehr als 19 kann es ja nicht werden, passt in ein Byte), danach DIV/MOD Behandlung von klein nach groß.
166
x2 ----- 12 12 2 ===== 332 |
AW: LongInt zu kurz | array multiplizieren ?
Du kannst das ganze mal mit Int64 verwenden. Der sollte so groß sein, dass du dich locker darin austoben kannst. Wenn das nicht reicht, gibt es BCD (ob man dann noch die Grundrechenarten anwenden kann, weiß ich nicht) oder du besorgst dir eine Mathe-Unit, die sehr große und sehr genaue Zahlen ermöglicht.
Tipp für dich: mit 2 multiplizieren (wenns schnell gehen soll):
Delphi-Quellcode:
.
Zahl shl 1
Bernhard |
AW: LongInt zu kurz | array multiplizieren ?
Hallo,
Zitat:
|
AW: LongInt zu kurz | array multiplizieren ?
Danke habe es mit Int64 probiert jetzt geht es
|
AW: LongInt zu kurz | array multiplizieren ?
Ach OK, das offensichtliche sehe ich mal wieder nicht.
Int64 hat natürlich auch einen ausreichenden Wertebereich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz