Mir ist noch was aufgefallen, was direkt nichts direkt mit dem Problem zu tun hat aber evtl. später für Verwirrung sorgen kann:
Delphi-Quellcode:
k:= StrToFloat(JvSG1.Cells[2,i]); l:= StrToFloat(JvSG1.Cells[2,i+1]);
If k > l then JvSG1.Cells[9,i+1] := '-1';
If k < l then JvSG1.Cells[9,i+1] := '+1';
If k = l then JvSG1.Cells[9,i+1] := '0';
Flieskommazahlen (außer Currency) sollte man möglichst nicht auf "gleich" testen, da u.U. mathematisch gleiche Zahlen aufgrund Abbildungsungenauigkeiten in der Fließkommazahl plötzlich ungleich werden.
Statt nun kompliziert zu runden (was auch nie genau wird) könnte man die Quelle vor der Umwandlung testen:
Delphi-Quellcode:
if JvSG1.Cells[2,i] = JvSG1.Cells[2,i+1] then
JvSG1.Cells[9,i+1] := '0'
else
// größer / kleiner prüfen
PS: Man könnte meinen, dass gleiche Strings immer gleich umgewandelt werden sollten. Meine mich aber zu erinnern, das Intel-CPUs da einen Mechanismus haben, Ungenauigkeiten durch wechselndes auf/abrunden auszugleichen (hoffe, das hab' ich nicht falsch in Erinnerung).