8 Stimmen

Ausnahme bei Fließkommadivision durch Null in Delphi5

Meine Anwendung ist in Delphi5 geschrieben. Ich verwende madExcept, um Bugs aufzuspüren. Ich habe eine "Floating point dvision by zero" Ausnahme aufgespürt, wo sie nicht sein sollte. Das Codesegment, in dem sie ausgelöst wird, geht wie folgt:

val:=100*Power(1.25,c);

wobei "c" eigentlich immer den Wert "1" hat.

Der Stacktrace des Protokolls:

main thread ($338f8):
00403504 +010 MyApp.exe   System   1970  +5 @FRAC
00479148 +058 MyApp.exe   Math              Power
007ae8a6 +262 MyApp.exe   MyClass  1962 +36 TMyClass.FormMouseWheel

Ich hatte eine weitere Ausnahme an einem Punkt, wo eine Division stattfand, aber der Divisor war eine Variable, die auch den Wert "1" hatte, als die Ausnahme auftrat. Das konnte ich debuggen und reproduzieren.

Meine Frage: Was übersehe ich? Gibt es bei der Fließkommadivision ein paar falsche Positivmeldungen, die mir nicht bekannt sind?

Außerdem: Ich verwende keine C++-DLLs an den Ausnahmepunkten, da sie dazu neigen, FP-Divisionen anders zu behandeln (indem sie NaN oder +/-INF zurückgeben, anstatt eine Ausnahme auszulösen).

Jeder Hinweis ist willkommen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X