Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Die Masse der Erde in delphie eingeben (https://www.delphipraxis.net/76164-die-masse-der-erde-delphie-eingeben.html)

Crackerr 30. Aug 2006 23:04


Die Masse der Erde in delphie eingeben
 
Hi Will ein Programm scchreiben für Planetenbewegung, allerdings hab ich das Problem, das delphi die masser der erde zu groß ist, und mit 10ner potenzen kann man imo in delphie nicht arbeiten

Jemand eine idee ?

Vielen Dank

Khabarakh 30. Aug 2006 23:38

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Crackerr
Jemand eine idee ?

Jupp, hier. Idee: Formuliere deine Frage neu, damit man dir helfen kann. Wichtige Informationen wären grober Aufbau der Applikation, eventuelle Fehlermeldung und vielleicht noch Source-Code der entsprechenden Stelle. Außerdem solltest du solche eher schwammigen Beschreibungen wie "ist delphi zu groß" vermeiden.

Meflin 30. Aug 2006 23:40

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Crackerr
und mit 10ner potenzen kann man imo in delphie nicht arbeiten

und um meinem Vorredner noch was hinzuzufügen: der Datentyp Extended tut genau das: mit 10er-Potenzen arbeiten... stimmt also nicht so ganz :gruebel:


omata 30. Aug 2006 23:41

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Khabarakh
...Außerdem solltest du solche eher schwammigen Beschreibungen wie "ist delphi zu groß" vermeiden.

naja, schonmal geschaut wie gross die Masse der Erde ist? hier

@Crackerr: Vielleicht hilft dir das hier weiter.

Gruss
Thorsten

Khabarakh 30. Aug 2006 23:54

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Meflin
Der Datentyp Extended tut genau das: mit 10er-Potenzen arbeiten... stimmt also nicht so ganz :gruebel:

Was :shock: ?
10er-Potenzen nutzen vielleicht solche Eigenbauten wie der (dadurch natürlich schnarchlahme) .Net-Decimal-Typ, aber die anderen Floattypen nutzen die Basis 2.

@omata: Auswendig kenne ich den Wert nicht, aber auswendig weiß ich, dass er sogar in Milligramm in einen Real48 passen würde.

Meflin 31. Aug 2006 00:02

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Khabarakh
Was :shock: ?

Vielleicht verstehe ich da was falsch, aber:
Zitat:

Zitat von Delphi Hilfe
Extended -3,6 x 10^4951 .. 1,1 x 10^4932

sieht für mich irgendwie nach Zehnerpotenz aus. auch die Ausgabe erfolgt in der form ..E.. was ja für *10 ^ x steht, oder nicht :gruebel:


omata 31. Aug 2006 00:04

Re: Die Masse der Erde in delphie eingeben
 
Und? Habt ihr da mal eine 1 mit 24 Nullen reingeschrieben?

Dax 31. Aug 2006 00:06

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von Delphi Hilfe
Extended -3,6 x 10^4951 .. 1,1 x 10^4932

sieht für mich irgendwie nach Zehnerpotenz aus. auch die Ausgabe erfolgt in der form ..E.. was ja für *10 ^ x steht, oder nicht :gruebel:

Du verwechselst da Interna und Darstellung ;) Intern ist ein Extended-Wert nix anderes als zwei DWord mit nem angepappten Word, sprich: 80 Bits.

Meflin 31. Aug 2006 00:07

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von omata
Und? Habt ihr da mal eine 1 mit 24 Nullen reingeschrieben?

Wenn mich meine spärlichen Mathe-Kentnisse nicht ganz verlassen haben, sind doch 1,1 x 10^4932 eine 11 mit 4931 Nullen oder nicht :gruebel: somit müsste das locker reingehen :mrgreen:

edit @Dax: hä :stupid:


3_of_8 31. Aug 2006 00:08

Re: Die Masse der Erde in delphie eingeben
 
Aber die interne Speicherung ist komplett anders.

Ein Extended besitzt 64 Bit Mantisse und 15 Bit Exponent.

Das bedeutet ein Extended kann ungefähr einen Zahlenbereich darstellen von:
-2^(2^14) bis 2^(2^14), also -1,19e4932 bis 1,19e4932

Und das ist verdammt viel. Die Masse der Erde passt da locker rein, da würde sogar die Anzahl der Atome der Erde locker reinpassen.

(Wenn ich mich nicht verrechnet hab)

EDIT: Roter Kasten... grml...

omata 31. Aug 2006 00:10

Re: Die Masse der Erde in delphie eingeben
 
Ok, so gehts...

Delphi-Quellcode:
uses Math;

var m:extended;
begin
  m:=5.9736 * power(10, 24);
end;
Gruss
Thorsten

Hawkeye219 31. Aug 2006 00:21

Re: Die Masse der Erde in delphie eingeben
 
Falls die Unit Math mal kaputt sein sollte:

Delphi-Quellcode:
m := 5.9736E24;
Gruß Hawkeye

Dax 31. Aug 2006 00:21

Re: Die Masse der Erde in delphie eingeben
 
Zitat:

Zitat von 3_of_8
Und das ist verdammt viel. Die Masse der Erde passt da locker rein, da würde sogar die Anzahl der Atome der Erde locker reinpassen.

Da kommst du auch mit Single hin.

Wenn man sich das mal ankuckt, dann sieht man, das man für "Allerweltsanwendungen" (also Dinge, die entfernt was mit der Realität zu tun haben), wohl niemals auch nur den Double-Raum sprengen wird.. Geschweige denn Extended. Und wenn doch: negaH hatte da doch was.. *g*

Wikipedia
Anzahl Teilchen* 4·10^78 bis 6·10^79
Anzahl Photonen* 10^88

* bezogen auf das beobachtbare Hubble-Volumen.

dizzy 31. Aug 2006 05:33

Re: Die Masse der Erde in delphie eingeben
 
Vorsicht vor den Details! Extended kann zwar riesig große Zahlen darstellen, aber trotzdem maximal 2^80 Werte genau. Das heisst, dass lediglich ein verschwindend geringer Prozentsatz exakt darstellbar ist. Zu beachten auch: Signifikante Stellen bei Extended: 19-20. Eine 10^24 ist aber 25-stellig, und würde daher bestenfalls als Näherung darstellbar sein. Bei noch größeren Werten, dürften die darstellbaren Werte steigenden Abstand voneinander haben, womit die Wahrscheinlichkeit wächst, eine nicht wirklich gute Näherung zu bekommen.

Der Zahlenbereich von Extended schaut zwar irre toll aus, aber lasst euch um Gottes Willen nicht immer alle davon irre führen! Mehr als 2^[bits] Werte gehen NIE, egal wie sich der Typ zusammensetzt. Bei Floats leidet halt die Genauigkeit unter der Range.

Je nach Einsatzzweck können diese Näherungen sicherlich reichen, aber für den vorliegenden Fall würde ich einfach die Einheit in der ich rechne ändern. Was spricht dagegen in z.B. Megatonnen statt in Kilogramm zu rechnen? (Den entsprechenden Faktor muss man nur konsequent auf alle anderen Maßeinheiten durchziehen, und du wirst keinen Unterschied im Ergebnis bemerken.)

Zudem bietet sich die Angabe von 5,9736*10^24, also 5973600000000000000000000 doch prima an um die Einheiten zu kürzen. Siehst du WIE viele Nullen da unnötig sind, und nichts zur Genauigkeit beitragen? Wenn man die Zahl so in einen Extended quetscht, würde die Genauigkeit deswegen leiden, da ja binär gespeichert wird. Und der o.g. Wert ist Binär mit großer Wahrscheinlichkeit keine Zahl mit einer langen 0-Kette am Ende ;) (Bzw. würde sich keine Mantisse mit einer so langen 0-Kette ergeben vermute ich mal.)

\\Edith: Schlechtschreibung...


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 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 by Thomas Breitkreuz