Mittwoch, 11. Mai 2011

FPC: Ungenauigkeiten bei MinutesBetween

MinutesBetween (aus DateUtils) liefert manchmal ein Ergebnis, das um 1 vom erwarteten Ergebnis abweicht. So kann der Unterschied zwischen zwei TDateTime-Werten, die genau eine Minute auseinanderliegen, von der Funktion auch mal mit 0 angegeben werden. Der Grund dafür liegt in der üblichen Ungenauigkeit von Fließkommaoperationen.

Genauer ist nach meinen Erfahrungen in der Regel folgende Konstruktion:

Round(MinuteSpan(t1, t2))

Dabei sind t1 und t2 eben zwei TDateTime-Werte. Hier ist allerdings der aktuelle Rundungsmodus zu beachten, der von Round benutzt wird.

Keine Kommentare:

Kommentar veröffentlichen