Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Variablenbereich zu klein?

JonasSchwartze / 3 Antworten / Baumansicht Nickles

Hallo Leute!


Ich programmiere im Delphi und hab ne Extended Variable deklariert. Jetzt gibt die aber bei Berechnungen wie 99^9 den Geist auf. Das heißt sie gibt sinnlose, negative Werte aus.
Ist vielleicht der Variablenbereich zu klein oder stimmt was mit meiner Rechnung nicht.


Ich hoffe mir kann jemand helfen.


Danke im Vorraus.


Jonas

bei Antwort benachrichtigen
Andreas42 JonasSchwartze „Variablenbereich zu klein?“
Optionen

Hi!

Gib doch einach die Zwischenergebnisse deiner Berechnung aus (oder lässt das Programm im Debugger laufen), dann siehst du was passiert.

Ohne ein echtes Beispiel (mit Quelltext) kann man nichts konkreteres sagen (und es dürfte klar sein, dass Extended-Werte eine begrenzte Genauigkeit haben).

Laut meinem Taschenrechner ist 99^9 (99 hoch 9) in etwa 9,135 * 10^17 und dass sollte Extended mit seinem Wertebereich locker wegstecken können (3,6*10^-4951 bis 1,1*10^4932).

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
JonasSchwartze Andreas42 „Hi! Gib doch einach die Zwischenergebnisse deiner Berechnung aus oder lässt das...“
Optionen

Naja ich hab auch gedacht das Extended das kann.
Wenn ich allerdings meinen Wert ausrechne kommt immer was bei -1.2E19 oder sowas. und negativ kann der Wert ja nun nicht sein.
Mein Wert errechnet sich allerdings aus Integer werten. kann es daran liegen?

Wenn du nichts dagegen hast schick ich die mal die Rechnung.

Danke Schonmal.

bei Antwort benachrichtigen
Andreas42 JonasSchwartze „Naja ich hab auch gedacht das Extended das kann. Wenn ich allerdings meinen Wert...“
Optionen

Hi!

"Wenn du nichts dagegen hast schick ich die mal die Rechnung."

Doch, da hab' ich was gegen. Versteh' mich nicht falsch, es gibt durchaus Leute für die ich die Rechnung bezahle, aber nicht einfach so... ;-)

Stell die Berechnung bzw. den Quelltext einfach als Antwort ein. Das kann dann ich sehen und alle anderen auch - da werden wir dann schon eine Lösung finden.

Es wird warscheinlich an den Integer-VARs leigen. Falls Delphi sich dort wie Turbo-Pascal verhält, werden die Berechnungen dann mit Integern durchgeführt, wenn nur Integer vorhanden sind. Der Typcast nach Extended erfolgt dann erst bei der Zuweisung.

Wenn nun im Compiler kein Überlaufcheck aktiviert ist, dann entstehen beim Intergerüberlauf in der Tat negative Werte.

Evtl. Hilft es schon, wenn du eine der in der Berechnung beteiligten Variablen als Extended deklarierst (oder eine Extended-Hilfsvariable nutzt, in die vor der Berechnung mit dem Wert einer Integer-Variablen gefüllt wird).

Bis denn
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen