Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#11

Re: Stunden/Minuten in Dezimalwerten

  Alt 13. Apr 2007, 12:40
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
Delphi-Referenz durchsuchenRound 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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat