![]() |
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:
mein lehrer hat mir folgende formel gegeben:
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; Zitat:
ich denke das liegt daran das delphi mit so hohen zahlen nicht zurechtkommt was meint ihr? |
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 |
Re: Hohe Zahlen
Zitat:
Delphi-Quellcode:
wird wohl 'ne globale Konstante sein, denk ich mal.
x := y * // y = constante = 6,67 * 10^(-11)
Gruß Calculon -- |
Re: Hohe Zahlen
Delphi-Quellcode:
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.
const
y = 0.0000000000667; r = 6378137; // in meter liegt vllt daran :stupid: kennt jemand eine gute BigInt - klasse? ich hab bisher nur ![]() am besten wäre es natürlich wenn diese BigInt auch mit kommazahlen umgehen könnte... |
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. |
Re: Hohe Zahlen
Hagens BigInt-Klasse finde ich nicht :(
ist die bei DEC dabei? ich hab mal DEC eingebunden, er findet aber kein TBigInt |
Re: Hohe Zahlen
![]() aber die brauchst du nicht wirklich für dein Problem. Gruß Hagen |
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. |
Re: Hohe Zahlen
Fliesskommazahlen haben zwar einen großen Wertebereich aber eine begrenzte Genauigkeit
|
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 22:32 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