Rechnen mit großen Zahlen

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Rechnen mit großen Zahlen

Beitrag von John »

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

monta
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:

Beitrag von monta »

;)

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

Euklid
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:

Beitrag von Euklid »

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

monta
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:

Beitrag von monta »

Wieso?

Extendet unterstützt doch das gewünschte vollkommen.
Johannes

Benutzeravatar
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:

Beitrag von af0815 »

monta hat geschrieben:Wieso?

Extendet unterstützt doch das gewünschte vollkommen.
Kommt darauf an wie genau er Rechnen will. Extended kann bei längeren Rechenoperationen ungenau werden. Dann sind so Spezialbiblotheken gefordert.

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).

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

af0815 hat geschrieben:
monta hat geschrieben:Wieso?

Extendet unterstützt doch das gewünschte vollkommen.
Kommt darauf an wie genau er Rechnen will. Extended kann bei längeren Rechenoperationen ungenau werden.
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?


John

Euklid
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:

Beitrag von Euklid »

Genau. Ab 19 Stellen rundet er bei extended. Kommt drauf an, wie genau John es haben will.

Mit der gennannten Library geht es beliebig genau.

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

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

Euklid
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:

Beitrag von Euklid »

Ich habe sie selbst noch nicht ausprobiert. Laut Homepage sind die Routinen alle geschwindigkeitsoptimiert.

Benutzeravatar
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:

Beitrag von af0815 »

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
Die Frage ist: Wieviel und wie genau mußt du rechnen. Daraus ergibt sich dann der Performanceunterschied.

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).

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Wie kann ich den bei extendet eine normale konstante festlegen?(bei mir hats wenn ich die Zahl dahinter in klammern setze nicht klappt)
John
Zuletzt geändert von John am Sa 8. Sep 2007, 17:08, insgesamt 1-mal geändert.

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Nächste Frage:
Wie könnte ich in ein Edit-feld hochzahlen einlesen das sie auch richtig eingelesen werden?
Ich mache das imho mit extended.


John

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Kannst du das bitte auch so ausdrücken das man versteht was du machen willst
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

John
Beiträge: 273
Registriert: Mo 30. Jul 2007, 19:55

Beitrag von John »

Also ich meinte damit:
Nehmen wir an ich hätte die Zahl 7,6*10^2 im Editfeld stehen.
Wie könnte ich die in Extended einlesen? Also das er die Zahl richtig einliest.
jetzt verstanden?

John

Benutzeravatar
theo
Beiträge: 11010
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

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;

Antworten