![]() |
wirklich große Zahlen unter Delphi
Hi,
aus langeweile und Interesse habe ich mir ein Faktorisierungsprogramm geschrieben. Das ist nichts tolles, das weiss ich, aber ich würde mein Programm trotzdem mal gerne an wirklich großen Zahlen versuchen lassen. Und mit groß meine ich erstmal Zahlen mit einer zweistelligen Anzahl an Ziffern. Ich weiss das es sowas wie Int64 gibt. Aber erstens würde das (wenn ich das richtig verstehe) auch "nur" (:D) Zahlen bis 2^64 zulassen. Und da wäre dann ja auch bei 19 Stellen schluss. Und zweitens weiss ich nicht wie ich damit arbeite. Kann ich einfach überall statt >Integer< >Int64< schreiben? Und wie gehts danach weiter? WIe kann ich mit noch größeren Zahlen arbeeiten? Vielen Dank schonmal im vorraus :) |
Re: wirklich große Zahlen unter Delphi
Fast.
Wenn du wirklich große Zahlen suchst, nimm Extended. Das Teil kann sehr große Zahlen verarbeiten, allerdings dann nur noch auf maximal 20 Stellen genau, dafür jedoch fast beliebig groß. Und etwas langsamer. Ansonsten geht Int64 genauso wie Integer, nur ist es kein Ordinaltyp, das heißt du kannst sie nicht für Schleifen verwenden. EDIT: Wenn dus noch größer brauchst, verwende die DECMath von Hagen. |
Re: wirklich große Zahlen unter Delphi
das problem ist, dass ich zur Faktorisierung die Funktion >mod< unbedingt brauche. Und die funktioniert halt nur mit Integer Werten. Ansonsten müsste ich mir wohl irgendwas selbst basteln und die FUnktionen wie modulo selbst nachprogrammieren, was aber eigentlich für ein Spass programm etwas viel wäre.
Ich werd dann mal nach dieser DECMath Unit suchen. Vielen Dank :) |
Re: wirklich große Zahlen unter Delphi
[delphi]
function fmod(a, b: Extended): Extended; begin result:=a-(a/b); end; |
Re: wirklich große Zahlen unter Delphi
@3_of_8:
Extended < Int64 Abgesehen davon verwendet Extended Nachkommastellen und belegt dadurch schon Speicher. Bei einem Faktorisierungsprogramm braucht man aber keine Nachkommastellen. Chris |
Re: wirklich große Zahlen unter Delphi
Zitat:
DEC kann ich nur empfehlen. Habe ich selbst bei einem meiner Matheprpgramme benutzt (siehe: ![]() Schu mal auf Luckies Homepage. Da findest du die aktuelle DEC Version. Manches davon sogar Open Source! |
Re: wirklich große Zahlen unter Delphi
Zitat:
Gruß Der Unwissende |
Re: wirklich große Zahlen unter Delphi
Ups, da hast du recht. Hab ich Mist gebaut.
Delphi-Quellcode:
@Chakotay: Ein Gleitkommawert ist AFAIK so aufgebaut, dass er eine Zahl sowie ihren 10er Exponenten speichert. Das heißt praktisch, ich nehme die Zahl 42 und lasse ihr Komma mal um 30 stellen nach rechts "gleiten" und habe dann 42*10^30, was man nicht mit nem Integer darstellen kann. ;)
function fmod(a, b: Extended): Extended;
begin result:=a-Extended(trunc(a/b))*b; end; |
Re: wirklich große Zahlen unter Delphi
Zitat:
![]() Chris |
Re: wirklich große Zahlen unter Delphi
Zitat:
Zitat:
Extended = 64 Bit Mantisse und 15 Bit Exponent (1 VZ Bit). Eine Gleitkommazahl (genauer ihr Betrag) berechnet sich nun aus Mantisse * Basis (hier fest 2)^Exponent. Natürlich ist ein Extended hier also größer als ein Int64 Wert. Der Größte Extended Wert liegt bei 1.1 * 10^4932! Das ist ordentlich groß! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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