Thema: Delphi Plus / Plus = Minus?

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Plus / Plus = Minus?

  Alt 15. Sep 2009, 00:43
Delphi-Quellcode:
Baseperhour := (2.539.006 - 1.935.338) * 60 * 60 / 1781;
Baseperhour := 2.173.204.800 {$81887940} / 1781;
da es bis zum / alles Integer sind, wird da nur mit Integern
gerechnet und da liegt das Zwischenergebnis außerhalb des Wertebereichs.

PS: mit aktiver Überlaufprüfung wäre dieses aufgefallen!


Delphi-Quellcode:
// wurde schon genannt
Baseperhour := (exp.Baseexp - exp.startbaseexp) * 60.0 * 60 / Seconds;

// das wäre auch gegangen
Baseperhour := Real(exp.Baseexp - exp.startbaseexp) * 60 * 60 / Seconds;
und diese beiden (gibt noch mehr) Möglichkeiten verschieben die Berechnung (für diese Werte) rechtzeitig in von Integer- in die Fließkommaberechnung.

und falls sogar die Negation schon den Integerbereich sprengen könnte, dann so
Delphi-Quellcode:
// das wäre auch gegangen
Baseperhour := (Real(exp.Baseexp) - exp.startbaseexp) * 60 * 60 / Seconds;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat