Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hohe Zahlen (https://www.delphipraxis.net/95893-hohe-zahlen.html)

dominikkv 15. Jul 2007 13:43


Hohe Zahlen
 
Hi

ich versuche grad eine function zu schreiben die mir ausrechnet wie viel energie ich brauche um mit einem raumschiff von der erde wegzufliegen...

ich habe nen trackbar mit dem ich die höhe einstelle, diese höhe wird dann in abschnitte unterteilt und ausgerechnet wie viel energie benötigt wird um diese höhe zu überwinden

pos = die höhe insgesammt
z = anzahl der abschnitte
mPlanet, mSchiff = masse des planeten / des schiffes

Delphi-Quellcode:
function Energieberechnung(Pos, Z, mPlanet, mSchiff: Cardinal): Extended;
var h: Extended;
    I: Cardinal;
    x: Extended;
begin
  h := Pos/Z;      // die höhe für jeden abschnitt
  result := 0;

  for i := 1 to Z do
    begin      
      x := y *         // y = constante = 6,67 * 10^(-11)
           (
           (mPlanet*mSchiff) / (
                               (r+(i*h-h)) * (r+(i*h))   // r = radius erde = 6378137
                               )
           ) *
           h;
      Result := Result + x;
    end;
end;
mein lehrer hat mir folgende formel gegeben:

Zitat:

w = y * ((m * M)/(r0*r1)) * (r1-r0)
das problem: das ergebnis ist immer sehr klein (0.000000000234412 oder so)
ich denke das liegt daran das delphi mit so hohen zahlen nicht zurechtkommt

was meint ihr?

ULIK 15. Jul 2007 13:53

Re: Hohe Zahlen
 
Prüf doch erst mal, ob die Einheiten passen. Eventuell mußt Du hier noch etwas justieren.

[edit]Du rechnest mit y definierst das aber nicht![/edit]

Grüße,
Uli

calculon 15. Jul 2007 14:05

Re: Hohe Zahlen
 
Zitat:

Zitat von ULIK
[edit]Du rechnest mit y definierst das aber nicht![/edit]

Delphi-Quellcode:
x := y *         // y = constante = 6,67 * 10^(-11)
wird wohl 'ne globale Konstante sein, denk ich mal.

Gruß

Calculon
--

dominikkv 15. Jul 2007 14:10

Re: Hohe Zahlen
 
Delphi-Quellcode:
const
  y = 0.0000000000667;
  r = 6378137;    // in meter
hmm einheiten müssten eigendlich passen... nur für die masse der erde nehme ich halt 10000 kg, weil ich sonst probleme mit dem integer-wertebereich hab... eigendlich müsste das 5974000000000000000000000 kg sein.

liegt vllt daran :stupid:

kennt jemand eine gute BigInt - klasse?
ich hab bisher nur diese gefunden, und bin nicht wirklich davon begeistert weil man mit der nicht rechnen kann :lol:

am besten wäre es natürlich wenn diese BigInt auch mit kommazahlen umgehen könnte...

3_of_8 15. Jul 2007 14:12

Re: Hohe Zahlen
 
Nimm halt statt Integer einen Single, Double oder Extended, dann passt das.

EDIT: Hagens BigInt-Klasse ist verdammt gut. Such mal danach.

dominikkv 15. Jul 2007 15:15

Re: Hohe Zahlen
 
Hagens BigInt-Klasse finde ich nicht :(

ist die bei DEC dabei?
ich hab mal DEC eingebunden, er findet aber kein TBigInt

negaH 15. Jul 2007 16:01

Re: Hohe Zahlen
 
http://www.michael-puff.de/Developer...n/DEC_5_1c.zip

aber die brauchst du nicht wirklich für dein Problem.

Gruß Hagen

3_of_8 15. Jul 2007 16:43

Re: Hohe Zahlen
 
Sag ich doch: Ein Single, Double, Extended ist perfekt, außerdem brauchst du sowieso Gleitkommatypen bei deiner Berechnung.

Single, Double, Extended können mit Zahlen bis 10^38, 10^308 und 10^4932 umgehen, das reicht locker.

Wenn die Berechnungen falsch sind, liegt es höchstwahrscheinlich an deinem Code. Ich blicke aber weder bei der Formel noch bei deinem Code durch.

mkinzler 15. Jul 2007 16:48

Re: Hohe Zahlen
 
Fliesskommazahlen haben zwar einen großen Wertebereich aber eine begrenzte Genauigkeit

3_of_8 15. Jul 2007 16:52

Re: Hohe Zahlen
 
Die Genauigkeit ist auch mehr als ausreichend, würde ich mal sagen. (bis zu 22 Dezimalen, IIRC)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:27 Uhr.
Seite 1 von 4  1 23     Letzte »    

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