AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wirklich große Zahlen unter Delphi

Ein Thema von Antigo · begonnen am 15. Aug 2006 · letzter Beitrag vom 16. Aug 2006
Antwort Antwort
Seite 1 von 3  1 23      
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#1

wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 16:42
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" () 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
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 16:50
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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Antigo

Registriert seit: 14. Mär 2005
274 Beiträge
 
#3

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 17:00
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
Michael
"How should I know if it works? That's what beta testers are for. I only coded it."
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 17:14
[delphi]
function fmod(a, b: Extended): Extended;
begin
result:=a-(a/b);
end;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 17:57
@3_of_8:
Extended < Int64

Abgesehen davon verwendet Extended Nachkommastellen und belegt dadurch schon Speicher. Bei einem Faktorisierungsprogramm braucht man aber keine Nachkommastellen.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von Alexander Roth
Alexander Roth

Registriert seit: 17. Mai 2004
Ort: Kenn
574 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 18:03
Zitat von 3_of_8:
EDIT: Wenn dus noch größer brauchst, verwende die DECMath von Hagen.
Wie er es anscheinend bracht.

DEC kann ich nur empfehlen. Habe ich selbst bei einem meiner Matheprpgramme benutzt (siehe: Primfaktoren)

Schu mal auf Luckies Homepage. Da findest du die aktuelle DEC Version. Manches davon sogar Open Source!
Alexander Roth
Ich bin umgestiegen auf: Lazarus und Ubuntu! Alles OpenSource!

Besuch doch mal: www.roth.us.ms
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#7

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 18:07
Zitat von 3_of_8:
Delphi-Quellcode:
function fmod(a, b: Extended): Extended;
begin
result:=a-(a/b);
end;
Dumme Frage, was genau soll denn fmod machen? Das hat doch nichts mit modulo zu tun, oder seh ich das gerade völlig falsch? Wenn ich mit der Formel z.B. 10 mod 5 rechne, würde ich als Ergebnis 10 - (10 / 2) = 8 bekommen, hm, wäre ich nicht glücklich!

Gruß Der Unwissende
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 18:14
Ups, da hast du recht. Hab ich Mist gebaut.

Delphi-Quellcode:
function fmod(a, b: Extended): Extended;
begin
result:=a-Extended(trunc(a/b))*b;
end;
@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.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 18:24
Zitat von 3_of_8:
@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.
Nein. Extended speichert die Daten nach IEEE754. D.h. es wird wenn überhaupt der Exponent zur Basis 2 gespeichert. Und sofern Extended unter Delphi nicht 64Bit belegt, wird Extended nicht an Int64 rankommen - und soweit ich weiß ist das der Fall.

Chris
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#10

Re: wirklich große Zahlen unter Delphi

  Alt 15. Aug 2006, 18:32
Zitat von Chakotay1308:
D.h. es wird wenn überhaupt der Exponent zur Basis 2 gespeichert.
Was heißt denn hier wenn überhaupt? Natürlich wird ein Exponent abgespeichert! Wie soll denn bitte eine Gleitkommazahl ohne berechnet werden?

Zitat von Chakotay1308:
Und sofern Extended unter Delphi nicht 64Bit belegt, wird Extended nicht an Int64 rankommen - und soweit ich weiß ist das der Fall.
Wo kommt denn jetzt dieses Wissen her? Hilfe! Ich meine schau in die Delphi Hilfe, da steht dass Extended 10 Byte verwendet, 10 Byte = 80 Bit > 64 Bit. Dann kannst du gleich deine eigene Quelle bemühen, da steht:
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ß!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz