Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Nicht nachvollziehbare Invalid floating point operation

  Alt 29. Okt 2010, 23:28
Hallo,
folgendes funktioniert (Zahlen kommen eigentlich von Funktionen, sind hier als Zahlen selbst eingefügt):
Delphi-Quellcode:
var
  X: Extended;
begin
  X := Round((5.4097598831e+17 / (2 * 13.685690504)) * 497);
  ShowMessage(FloatToStr(X));
Das funktioniert keineswegs. Solange man einen konstanten Ausdruck übergibt, versucht der Compiler diesen auszuwerten. Offenbar werden dabei nicht alle Fehler gemeldet (in diesem Fall die unmögliche Umwandlung des Extended-Wertes in einen ganzzahligen Wert), es wird stattdessen ein Fehlerwert zurückgegeben. Wenn der Ausdruck zur Laufzeit berechnet werden muss, meldet die RTL alle auftretenden Fehler:

Delphi-Quellcode:
var
  X, Y: Extended;
begin
  Y := Round(1E200);
  ShowMessage (FloatToStr(Y)); // liefert -9,22337203685478E18 = Min(Int64)
  
  X := 1E200;
  Y := Round(X);
  ShowMessage (FloatToStr(Y)); // liefert "Ungültige Gleitkommaoperation"
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat