Ya he encontrado una forma que creo es la correcta para hacer el redondeo en estos casos. De todas formas gracias por tu ayuda
jafl1965.
Voy a poner el código para aquellos que les pueda interesar.
Código:
Mascara_Precio := '#,###,##0.' + StringOfChar('#',Decimales.Text-1) + '0';
Num_Decimal := StrToFloat('0,' + StringOfChar('0',StrToInt(Decimales.Text) -1) + '1');
if Redondeo = 0 then // Por Exceso
Redondear := Round(Precio_Tarifa / Num_Decimal + 0.49) * Num_Decimal
else // Por Aproximación
Redondear := FormatFloat(Mascara_Precio, Precio_Tarifa);
Y ahora lo explico ok? En primer lugar, Num_Decimal es una variable Double en la cual incluyo un valor de tipo 0.01 o 0.001, según los decimales en los que quiera formatear el valor. Si lo quiero formatear a 2 pues creo el valor 0.01 si lo quiero a tres pues entonces 0.001, etc...
Tambien creo el formato de la masaara para generar el redondeo por aproximación. Y ya está simplemente debo aplicar los calculos mostrados en pantalla para según los casos que sean.
Para aquellos que no sepan la diferencia entre un redondeo u otro les voy a poner un ejemplo, si tengo el valor 7.337 y lo quiero redodnear a 2 decimales, en ambos casos me devolverá el valor 7.34, pero en el caso que el valor sea 7.333, en el de aproximación el resultado será 7.33 y en el de exceso el valor será 7.34. Como veis la diferencia a largo plazo se nota.
Bueno espero que esto le pueda servir a alguien más aparte de a mí. (Por fin me siento productivo en el foro, aunque sea respondiendome a mi mismo