Hi,
ich habe hier ein "merkwürdiges" Problem.
In folgernder Routine sollen die Min- und die Max-Werte einer Liste bestimmt werden:
Delphi-Quellcode:
self.FMax:=self[0].FYR;
self.FMin:=self[0].FYR;
for I := 0 to self.Count-1 do
begin
if self[i].FYR > self.FMax then
self.FMax:=self[i].FYR;
if self[i].FYR < self.FMin then
Self.FMin:=self[i].FYR;
end;
Die Deklaration der Variablen sieht so aus:
Delphi-Quellcode:
FYR: Extended;
FMax: Extended;
FMin: Extended;
Jetzt sollte man annehmen, dass Extended auch Extended bleibt, und auch die Kommastellen mit übertragen werden.
Doch bereit nach der ersten Zeile wo in FYR 5,12343223 sind wir in FMin nur 5 abgelegt.
Ist 4,7734673 in FYR wird ebenfalls in FMin eine 5 abgelegt.
Logischerweise schlagen alle weiteren Vergleiche fehl, das in diesem speziellen Fall in FYR nur Werte von 4,75 bis 5,25 enthalten sein können.
Erklären kann ich es mir nicht. Ich brüte nun schon lange drauf rum, aber es erschließ sich mir nicht, wo der Fehler liegen sollte.