Следующая статья: Как писать на Delphi?
Как научить Delphi правильно округлять дробные числа?
function RoundEx(X: Double; Precision: Integer): Double;
{ Precision : 1 - до целых, 10 - до десятых, 100 - до сотых… }
var
ScaledFractPart, Temp: Double;
begin
ScaledFractPart:=Frac(X) * Precision;
Temp:=Frac(ScaledFractPart);
ScaledFractPart:=Int(ScaledFractPart);
if Temp >= 0.5 then ScaledFractPart:=ScaledFractPart+1;
if Temp <= -0.5 then ScaledFractPart:=ScaledFractPart - 1;
RoundEx:=Int(X)+ScaledFractPart / Precision;
end;