Delphi - como redondeo en delphi

 
Vista:

como redondeo en delphi

Publicado por pani_alex (18 intervenciones) el 19/12/2005 13:07:57
hola mi pregunta no es exactamente como redondeo sino como le hago para redondear en multiplos de 50
por ejemplo el RoundTo puede redondear en multiplo de 100 y le pones (rmNearest, rmUp, rmDown) dependiendo de lo que necesites.

rmNearest
127=100
150=200

y que pasa si yo quiero que me redondee siempre a mi favor en las facturas,
por ejemplo
110=150
150=150
160=200

lo que pasa es que en paraguay no existen los centavos, la moneda mas chica es de 50

obs: para los que no estan enterados, el Round de delphi no sirve, el que haya usado ese tiene que apurarse a reemplazarlo con el RoundTo por lo menos, si quieren saber mas datos sobre el Round entran en www.q3.nu y bajense el trucomania, alli busquen el Round. este programita es espectacular tiene una buena cantidad de codigos para delphi
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como redondeo en delphi

Publicado por yo (4 intervenciones) el 21/12/2005 14:36:36
Creo que una manera sencilla es crearte tu propia función de redondeo

algo asi

if mod(numero) >0 then
numero := numero+ (50 - mod (numero))
else
numero :=numero

es decir, si el resto es mayor que cero redondeas sino no

yo :[
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como redondeo en delphi

Publicado por Borisonik, Alejandro G. (5 intervenciones) el 29/12/2005 15:08:21
Otra forma de redondear hacia cualquier número sería utilizar la siguiente función:

Function RedondearA( n, en : real ) : Real;
begin
RedondearA := Trunc( n ) + Ceil( Frac( n ) / en ) * en;
end;

P.Ej.: Si quisieramos redondear cada 0,30:

RedondearA( 0.29, 0.30 ) --> 0.30
RedondearA( 0.30, 0.30 ) --> 0.30
RedondearA( 0.31, 0.30 ) --> 0.60
RedondearA( 0.59, 0.30 ) --> 0.60
RedondearA( 0.60, 0.30 ) --> 0.60
RedondearA( 0.61, 0.30 ) --> 0.90
RedondearA( 2.89, 0.30 ) --> 2.90
RedondearA( 2.90, 0.30 ) --> 2.90
RedondearA( 2.91, 0.30 ) --> 3,20

En este caso, redondea hacia arriba - ceil -, pero también se pueden usar la funciones Round - más cercano - y Floor - hacia abajo -.

;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar