![]() |
Laaaaange Zahlen
Ich bin dabei, eine Klasse zu schreiben, die mit sehr großen Ganzzahlen umgehen können soll. Also richtig lange Zahlen mit durchaus mehr als 1000 Stellen... auch BIGINT oder dergleichen hilft also nicht.
So weit, so gut: Nun bin ich dabei, die Subtraktionsroutine zu coden, scheitere aber in dem Fall, dass die Zahl negativ wird... Hat jemand 'ne Idee? Hier der Overhead:
Delphi-Quellcode:
Hier die Beta-Subtraktionsmethode:
TLangzahl=class
private vContent:TContent; IsNeg:boolean; procedure setContent(New:string); function getContent:string; public property Content:string read getContent write setContent; constructor Create; procedure Add(LZ:TLangzahl); procedure Increase; procedure Subtract(LZ:TLangzahl); procedure Decrease; procedure Multiply(LZ:TLangzahl); procedure Divide(LZ:TLangzahl); procedure Power(LZ:TLangzahl); procedure genRoot; destructor Destroy; end;
Delphi-Quellcode:
Liefert zum Beispiel (zugegeben: sinnvollerweise) "9" für "3-4"...
procedure TLangzahl.Subtract(LZ:TLangzahl);
var I, MaxLength:integer; begin if not(LZ.IsNeg)then begin MaxLength:=Max(High(vContent), High(LZ.vContent)); SetLength(LZ.vContent, MaxLength+1); SetLength(vContent, MaxLength+1); for I:=0 to MaxLength do begin vContent[I]:=vContent[I]-LZ.vContent[I]; if(vContent[I]<0)then begin vContent[I+1]:=vContent[I+1]-1; vContent[I]:=vContent[I] +10; end; end; end else Add(LZ); end; Danke im Voraus, Euer LDer Edit: TContent ist übrigens als array of Byte deklariert ;) |
Re: Laaaaange Zahlen
hab mir noch nicht alles durchgesehn, aber ...
Array of Byte Byte = 0..255 "(vContent[I]<0)" wird also nie eintreten, da Byte nie kleiner 0 wird. Tipp: nutze Array of ShortInt (-128..127) |
Re: Laaaaange Zahlen
Zitat:
Delphi-Quellcode:
;)
TContent=array of Shortint;
|
Re: Laaaaange Zahlen
Zitat:
|
Re: Laaaaange Zahlen
Zitat:
|
Re: Laaaaange Zahlen
Zitat:
|
Re: Laaaaange Zahlen
Such mal nach VLI
Er meint höchstwahrscheinlich den BigInt aus der DEC |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:51 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-2025 by Thomas Breitkreuz