Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sehr Große Zahlen (https://www.delphipraxis.net/113622-sehr-grosse-zahlen.html)

vsilverlord 11. Mai 2008 20:13


Sehr Große Zahlen
 
Hallo, ich programmiere immer noch an meiner Gravitationsprogramm. :spin: Ich hab nun das Problem, dass die Massen von Körpern wie z.b der Erde ziemlich groß sind (5974000000000000000000000 kg). Welches Zahlenformat soll ich nun nehmen? Ich muss ja mit den Zahlen auch noch Rechnen (Die Masse von 2 Körpern multiplizieren) und ich kenne kein Zahlenformat, das 60, wenn nötig sogar 200 stellen fassen kann.

Die Muhkuh 11. Mai 2008 20:14

Re: Sehr Große Zahlen
 
Hier im Forum suchenBigInt

Klaus01 11. Mai 2008 20:21

Re: Sehr Große Zahlen
 
Guten Abend,

würde es nicht ausreichen solch große Massen in Tonnen oder KiloTonnen
auszugeben?

Grüße
Klaus

grenzgaenger 11. Mai 2008 20:22

Re: Sehr Große Zahlen
 
wie wär es mit tonnen oder megatonnen? als normalen double .. das sollte reichen.
für die entfernungen und die grössen, kannste das ganze eh nicht auf's gramm abwiegen...

<HTH>

alzaimar 11. Mai 2008 20:26

Re: Sehr Große Zahlen
 
In den meisten Fällen reicht es doch, die zur Verfügung stehenden Stellen eines Double oder Extended-Datentyps zu benutzen. 15 Stellen sind doch nun mehr als ausreichend.
Zitat:

Zitat von vsilverlord
... die Massen von Körpern wie z.b der Erde ziemlich groß sind (5974000000000000000000000 kg).

5,974 E+024 passt ist ein Single-Datentyp. Wegen der bei Berechnungen zu erwartenden Rundungsfehlern würde ich auf Extended ausweichen. Damit hast Du für fast alle Berechnungen genügend Schutzstellen.

vsilverlord 11. Mai 2008 21:41

Re: Sehr Große Zahlen
 
aber big-int funktioniert nicht wenn ich kommastellen habe und die habe ich ja. Ich würde es ja gerne in megatonnen rechnen, aber dann kann ich das schlecht in die formel reinpacken, wenn z.b nur ein 15kg schweres objekt vorbeifliegt. dann habe ich nämlich 15 kommastellen (0,00000 und so weiter megatonnen)

NickelM 11. Mai 2008 21:56

Re: Sehr Große Zahlen
 
Und wenn du eine array von Singles machst???
Delphi-Quellcode:
GroßeZahl : array of Single
//So zuweisen
SetLenght(GroßeZahl,6) //die vor dem Komma :mrgreen:
GroßeZahl[0] := 1;
GroßeZahl[1] := 2;
GroßeZahl[2] := 5;
GroßeZahl[3] := 5;
GroßeZahl[4] := 6;
GroßeZahl[5] := 1,8495;
// Das wäre jetzt 125561,8495
Hm...das Problem wäre dan nur mit dem Rechnen :gruebel:
Vieleicht ist das ein Denkanstoß für dich :zwinker:

Nils_13 11. Mai 2008 22:11

Re: Sehr Große Zahlen
 
Als ich meine Sonnensystem-Simulation programmiert habe, habe ich mir von vornherein keine Gedanken drüber gemacht, diese Zahlen direkt zu übernehmen. Stattdessen habe ich sie ganz simpel skaliert. Lege einen Faktor für all deine Zahlen fest und erschaff dir eine eigene Dimension mit der du gut arbeiten kannst.

Hansa 12. Mai 2008 01:15

Re: Sehr Große Zahlen
 
Zitat:

Zitat von vsilverlord
aber big-int funktioniert nicht..aber dann kann ich das schlecht in die formel reinpacken, wenn z.b nur ein 15kg schweres objekt vorbeifliegt...

An der Erde ? :mrgreen: Der Vergleich Mücke/Elefant ist dann schon völlig lächerlich. :lol: Sogar Bazille und Elefant. :wall:

Dax 12. Mai 2008 01:19

Re: Sehr Große Zahlen
 
Zitat:

Zitat von Hansa
An der Erde ? :mrgreen: Der Vergleich Mücke/Elefant ist dann schon völlig lächerlich. :lol: Sogar Bazille und Elefant. :wall:

Wir wärs mit Fussball und Mond? :stupid:

Hansa 12. Mai 2008 01:26

Re: Sehr Große Zahlen
 
Aber luftgefüllter Fussball. Zumindest sofern der < 1 kg wiegt. :mrgreen:

Ne, Goldbarren und Sonne ist noch besser. :lol:

Dax 12. Mai 2008 01:34

Re: Sehr Große Zahlen
 
Oh.. Der durchschnittliche Fussball wiegt rund 400 Gramm.. Um den Vergleich möglichst exakt zu halten, sind das leider 320 Gramm zu viel :( Da macht die Luftfüllung nicht aus.

NickelM 12. Mai 2008 01:35

Re: Sehr Große Zahlen
 
Wenn wir schon soweit sind nehmen wir doch gleich eine Mücke und die Sonne :-D :-D :-D

Hansa 12. Mai 2008 01:59

Re: Sehr Große Zahlen
 
Ich glaube, es reicht jetzt echt. :duck:

alzaimar 12. Mai 2008 06:40

Re: Sehr Große Zahlen
 
Woissn hier der Mod, der Euch alle zurückpfeift?

Egal: Mit TBigInt geht es. Man muss nur die Einheit ändern. Ich meine, das im astronomischen Umfeld eine Genauigkeit von 1Gramm alle meß- und nicht meßbaren Eventualitäten abdeckt.

Man muss sich auch immer den (Un)Sinn der implementierten und dargestellten Genauigkeit vor Augen halten. Ich meine, wie seriös klingt das denn, wenn ich sage, das die Erde um 0,000000000000000000000000000000000000000000000012 314312413435345478678674531312346658766ms langsamer dreht, wenn ein intergalaktischer Fußball die Erde berührt.

Da kann man auch gleich sagen, das in China ein Sack Reis umgefallen ist.

sx2008 12. Mai 2008 07:47

Re: Sehr Große Zahlen
 
Bei der Simulation und Berechnung geht es ja nicht in erster Linie um Genauigkeit, sondern
um den grossen Zahlenbreich.
Es können sehr hohe Massen und Entfernungen auftreten, aber auch extrem kleine Kräfte und Werte (z.B. Gravitationskonstante).
Und daher kommen hier sinnvollerweise nur Flieskommazahlen in Betracht.
Man kann sämtliche Berechnungen in SI-Grundeinheiten (kg, s, m,...) anstellen, ohne dass der Zahlenbereich von Extended gesprengt werden kann.
Warum sollte man dann mit irgendwelchen BigInts und Skalierungen plagen, wenn Flieskommazahlen hier ein Heimspiel haben ?
Andererseits, wenn man Planetenbahn mehrere Hundert oder Tausend Jahre in die Zukunft rechnen möchte, haben kleinste Rundungsfehler grosse Änderungen der Bahnen zur Folge.
Dies gilt auch für das Drei- oder Mehrkörperproblem.
Man kann deshalb drüber nachdenken, ob man mit grösserer Genauigkeit als mit 80 Bit rechnen muss.

Corpsman 12. Mai 2008 09:08

Re: Sehr Große Zahlen
 
Also wenn du nur mit Integers rechnen würdest, da hätte ich was

BigNumber

Diese Idee kann man evtl auch auf Flieskomma ausweiten, must halt mal schaun.

vsilverlord 12. Mai 2008 10:31

Re: Sehr Große Zahlen
 
ja natürlich habt ihr alle Recht, das ist schon Unsinn, aber ich will mit meinem Programm halt so Unsinn ausrechnen. In erster Linie ist das Programm ja keine Simulation, sondern ein Rechenprogramm. :duck: das mit big number ist ne super idee, nur leider kann ich damit nicht rechnen:
Zitat:

Leider hatte ich bisher nur Lust die Addition zu
machen. Es soll aber noch Mod und Div folgen. (Corpsman)
Mal ein Beispiel, um zu verdeutlichen was ich meine:
Ein Raumschiff mit geringer Masse (10000kg) fliegt durch den Weltraum. In nächster Nähe ist ein Gasriese, ein Asteroid und ein Planetoid. Das Raumschiff wird von allen dreien angezogen. Mit dem Impulsantrieb kann es allerdings dagegenwirken. Was sind nun die möglichen Routen, die das Raumschiff fliegen kann, ohne dass es in die Umlaufbahn eines Objektes reingezogen wird und nicht mehr rauskommt? Also mit meinem Programm ließe sich das rechnen, wenn ich nur endlich ein großes Zahlenformat hätte. :cry:
Vom Rechnerischen und von den physikalischen Gegebenheiten hab ich schon alles programmiert.

Klaus01 12. Mai 2008 10:45

Re: Sehr Große Zahlen
 
Hallo Volker,

hast Du dir schon einmal die NX-Numerics library angeschaut.
Diese soll auch große Floats unterstützen.

Grüße
Klaus

Corpsman 12. Mai 2008 13:48

Re: Sehr Große Zahlen
 
@vsilverlord

Diese Klasse zeigt nur so ungefähr wies geht, es ist mehr als Sample gedacht das man dan ausbauen kann. Mod und Div zu implementieren sollte für einen entsprechenden Informatiker aber kein Problem sein.

vsilverlord 12. Mai 2008 15:36

Re: Sehr Große Zahlen
 
ja gut, ich kanns mir einigermaßen vorstellen, aber für mich nicht-informatiker ist das schon ein problem, bis ich das programmiert habe! Da muss ich ja dann auch meine gesamten anderen Quelltext danach ausrichten oder? ich kann ja dann nicht mal mehr x1:=x2+x3 eingeben ohne dass ich was daran ändern muss. :pale:

Corpsman 12. Mai 2008 16:55

Re: Sehr Große Zahlen
 
das kannst du mit allen anderen Optionen auch nicht machen.

In Delphi kann man keine Operatoren überladen :(

mkinzler 12. Mai 2008 16:57

Re: Sehr Große Zahlen
 
class operatoren von Records ab D10 schon

vsilverlord 12. Mai 2008 17:48

Re: Sehr Große Zahlen
 
haha delphi 10!! :tongue: das hab ich aber nicht

mkinzler 12. Mai 2008 17:55

Re: Sehr Große Zahlen
 
TDE ist kostenlos

grenzgaenger 12. Mai 2008 20:58

Re: Sehr Große Zahlen
 
Zitat:

Zitat von vsilverlord
Mal ein Beispiel, um zu verdeutlichen was ich meine:
Ein Raumschiff mit geringer Masse (10000kg) fliegt durch den Weltraum. In nächster Nähe ist ein Gasriese, ein Asteroid und ein Planetoid.

dennoch ist die frage, wie du den gasriesen auf eine wage legen willst, die noch auf 'n kilogramm oder SI einheit (Gramm) genau wiegt...

denke, du solltest dich entweder von der anforderung verabschieden oder 'ne allgemeingültige unit schreiben, die integer mit 10'000 stellen verlustfrei berechnen kann, mit sämtlichen operatoren :-) . wäre dir dankbar, wenn du diese unit anschliessend open source stellen könntest :-)

schöne grüsse GG

btw: auch die mondlandung hat damals mit 8 bit hingehauen :-)

ansonsten war es 'n prima fake, mit ebenfalls 8 bits :-)

vsilverlord 12. Mai 2008 21:45

Re: Sehr Große Zahlen
 
ok ich werds programmieren is ja gut. :firejump: :bouncing4: :coder2:
als ich meld mich dann wieder wenns nicht funktioniert :balloon:

Spiderpig_GER_15 12. Mai 2008 22:55

Re: Sehr Große Zahlen
 
klingt interessant was du da machst,

könntest du ein Screenshot veröffentlcihen wenn du so weit bist?

mfG
Spiderpig

Andy386 13. Mai 2008 14:10

Re: Sehr Große Zahlen
 
Zusammenfassend (bitte korrigier mich, wenn was falsch ist):
* du willst grosse Zahlen nehmen, für die Double locker reicht.
* du braucht keine utopische Genauigkeit, die Double aus dem Spiel werfen würde
* du brauchst mod & div....

Ergo: Warum baust du nicht einfach eine mod & div für doubles ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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