Wenn du die werte voeher in Integer (z.B. mit minuten) umwandelst und dann damit weiterrechnest, dann kannst du zumindestens weitere Rundungsfehler (basierend auf die Fließkommazahlen) vermeiden.
FloatingPointUnit (Fließkommaeinheit) ... halt das Ding in deinem Rechner, welches mit den reellen Zahlen rechnet.
Delphi-Quellcode:
i := Round((Ende - Start) * (24*60));
//i = minuten
Round rundet ja auf/ab, würde also kleine Rundungsfehler gut wegmachen und der Integer kennt derartige Rundungsfehler nicht.
hier mal ein "extremes" Beispiel für die Ungenauigkeiten bei reellen Typen:
(benötigt nur 2 TLabels und einen TButton)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
r: single;
begin
r := 0;
i := 0;
repeat
r := r + 0.0001;
i := i + 1;
Label1.Caption := FloatToStr(r);
Label2.Caption := FloatToStr(i / 10000);
Application.ProcessMessages;
until application.Terminated;
end;