FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Redondeo por exceso y por aproximación???
Hola amigos, en la aplicación que estoy desarrollando debo realizar sobre una catidad generada un redondeo por exceso o bien por aproximación según halla el usuario marcado una opción u otra.
He estado buscando en el foro y en la ayuda para así evitar tener que hacer esta pregunta, pero no he encontrado solución a lo que yo quería. He deducido que debo utilizar la función Round para el redondeo por exceso, pero y para el redondeo por aproximación??? La función más parecida es Trunc, pero esta devuelve un valor entero y yo estoy trabajando con valores con decimales. Gracias por la ayuda de antemano. |
#2
|
|||
|
|||
¿Te sirve RoundTo?
Porque ceil también devuelve un entero. Saludos. |
#3
|
|||
|
|||
Pues no lo se jafl1965, le echaré un vistazo haber si me puede servir. Gracias.
|
#4
|
|||
|
|||
jafl1965, esa función es valida en Delphi 5???? Me he dado cuenta que no he especificado la versión de delphi que estoy utilizando.
|
#5
|
|||
|
|||
No sabría decirte, trabajo con Delphi 6. Pero mira a ver, porque esta función está en la Unit MATH, declarala en el Uses y chécalo.
Saludos, |
#6
|
|||
|
|||
Encontré la solución.
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); 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 |
|
|
|