Delphi-Quellcode:
Function DvRound (Number,Granularity : double) : double;
begin
Result := Trunc(Number / Granularity + 0.5) * Granularity
end;
// Aufruf in deinem speziellen Fall (zur Zahl immer 0.1 hinzuaddieren)
DvRound (0.1 + 5.1, 0.5); => 5.0
DvRound (0.1 + 5.2, 0.5); => 5.5
...
DvRound (0.1 + 5.9, 0.5); => 6.0
... andere Möglichkeiten
DvRound (1.7123, 0.1); => 1.7
DvRound (1.7123, 0.01); => 1.71
DvRound (17.7123, 2); => 18
Die Funktion rundet also immer auf das nächste ganzahlige Vielfache der 'Granularity'.
Vermutlich gibt es dafür auch schon eine eingebaute Funktion...