Espero esto te pueda servir, lo saque de Trucomania, lo he usado y funciono bien.
Puedes usar Trunc o Round
{NOTA: el numero de digitos entre la parte entera y la decimal, nunca superara los 15 - ver tipo Real -}
function Redondear(Valor: Real; Redondeo: Integer):Real;
begin
Redondear := Trunc(Valor * Power(10, Redondeo)) / Power(10,Redondeo);
end;
Ejemplos, segun que uses
Con Trunc:
Redondear(StrToFloat('147845,6789'), 3) = 147845,678
Redondear(StrToFloat('147845,6789'), 0) = 147845
Redondear(StrToFloat('147845,6789'), -3) = 147000
Con Round:
Redondear(StrToFloat('147845,6789'), 3) = 147845,679
Redondear(StrToFloat('147845,6789'), 0) = 147846
Redondear(StrToFloat('147845,6789'), -3) = 148000
Saludos