Hi an Alle!
Folgendes Problem entsteht bei Rechenoperationen mit Variablen
vom Typ EXTENDED oder generell REAL, wenn diesen Variablen Bruchwerte zugeordnet werden: (Habe Delphi 6 Student Edition)
Kann mir irgendwer helfen?
Fall1:*************************************
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var a:extended;
begin a:=-0.2;
if a=-0.2 then a:=1 else a:=2; end; end; |
==> a=1 alles funktioniert richtig.
Fall2:*************************************
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var a:extended;
begin a:=1-1.2;
if a=-0.2 then a:=1 else a:=2; end; end; |
==> a=2 errechneter Wert a=1-1.2=-0.2 wird in der if-Bedingung nicht erkannt
Fall3:**************************************
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.Button1Click(Sender: TObject); var a:extended;
begin a:=1-1.2;
if a<-0.2 then a:=1 else a:=2; end; end; |
===> a=1 errechneter Wert a=1-1.2=-0.2 erfüllt die if-Bedingung
*******************************************
Fazit: Beim Typ EXTENDED muss der errechnete Wert im Speicher kleiner sein als der im Quelltext angegebene
Frage: Wie kann man das beheben oder umgehen?
gruss, Georg
Moderiert von
Klabautermann: Verschoben & Delphi-Tags hinzugefügt.