Rechnen mit großen Zahlen
Rechnen mit großen Zahlen
So ich habe folgendes Problem:
Ich würde gerne mit zahlen die zwischen, x*10^(-99 und y*10^99(im notfall geht auch x*10^-11 und y*10^35) rechnen. Zum einen Wie soll ich sie am besten definieren(single, double, real)
und wie kann ich mit ihnen am besten rechnen(mit div, mod oder gibts dafür andere zeichen?)
und wie könnte man sie dann in einen String umwandeln(inttostr?)
John
Ich würde gerne mit zahlen die zwischen, x*10^(-99 und y*10^99(im notfall geht auch x*10^-11 und y*10^35) rechnen. Zum einen Wie soll ich sie am besten definieren(single, double, real)
und wie kann ich mit ihnen am besten rechnen(mit div, mod oder gibts dafür andere zeichen?)
und wie könnte man sie dann in einen String umwandeln(inttostr?)
John
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:

Also Rechnen ganz normal mit den üblichen Rechenzeichen im Ziffernblock, also / * - +
(Wenn du es mit div usw macht werden ja ganzzahlen produziert, das wird ja nicht der Sinn sein)
Und umwandeln über StrToFloat bzw. FloatToStrF (zweiteres zum gleichzeitigen formatieren)
Als Typ spontan gesagt extended: höchste Genauigkeit und größter Wertebereich in dem dein gewünschter locker reinpasst (geht bis über 10^400).
Zuletzt geändert von monta am Do 6. Sep 2007, 14:19, insgesamt 2-mal geändert.
Johannes
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Hallo John!
Wahrscheinlich ist das was für dich:
http://gmplib.org/" onclick="window.open(this.href);return false;
Lazarus hat glaube ich sogar eine eigene Unit dafür.
Viele Grüße, Euklid
Wahrscheinlich ist das was für dich:
http://gmplib.org/" onclick="window.open(this.href);return false;
Lazarus hat glaube ich sogar eine eigene Unit dafür.
Viele Grüße, Euklid
- af0815
- Lazarusforum e. V.
- Beiträge: 6952
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Kommt darauf an wie genau er Rechnen will. Extended kann bei längeren Rechenoperationen ungenau werden. Dann sind so Spezialbiblotheken gefordert.monta hat geschrieben:Wieso?
Extendet unterstützt doch das gewünschte vollkommen.
So hat er die Möglichkeit sich die Genauigkeit am Ende zu wünschen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Erstmal schonmal Danke! und wie ungenau würde es dann am ende ungefähr werden? so ungenau wie mit einem normalen Taschenrechner(für schule oder Uni) oder noch Ungenauer?af0815 hat geschrieben:Kommt darauf an wie genau er Rechnen will. Extended kann bei längeren Rechenoperationen ungenau werden.monta hat geschrieben:Wieso?
Extendet unterstützt doch das gewünschte vollkommen.
John
- af0815
- Lazarusforum e. V.
- Beiträge: 6952
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Die Frage ist: Wieviel und wie genau mußt du rechnen. Daraus ergibt sich dann der Performanceunterschied.John hat geschrieben:Wie sieht das bei der genannten Library dann mit der Perfomance aus?
Gibt es da dann starke Perfomance einbüßungen oder fällt das überhaupt nicht ins gewicht?
John
Warum. Bei einer einzigen verketteten Rechenoperation wird der Finger noch nicht von Enter (oder der Maustaste) herunten sein. Bei vielen Schleifen kann es merklich werden. Dann mußt damit leben - da es nötig ist - oder die Genauigkeit an die geforderte Geschwindigkeit anpassen (oder einen besseren Algor. nehmen).
Das Thema gab es schon bei TP unter CP/M. Damals war es die Buchhaltungssoftware die genauer Rechen mußte als die float-Typen es teilweise konnten.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Da wirst du wohl parsen müssen. Schau mal was es bei Torry gibt:
http://www.torry.net/pages.php?id=307" onclick="window.open(this.href);return false;
http://www.torry.net/pages.php?id=307" onclick="window.open(this.href);return false;