Visual Basic - Redondear decimales

Life is soft - evento anual de software empresarial
 
Vista:

Redondear decimales

Publicado por agusti (41 intervenciones) el 07/08/2008 12:20:06
Hola a tod@s,

Alguien me puede ayudar?

Necesito redondear numeros decimales de la siguiente forma:

Ej: de 0.00 a 0.24 lo redondearía a 0.25
de 0.26 a 0.37 lo redondearía a 0.25
de 0.38 a 0.49 lo redondearía a 0.50

Es decir, lo que quiero es redondear al cuarto de decimal (0.25, 0.50, 0.75....)

Muchas Gracias por vuestra ayuda
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:Redondear decimales

Publicado por Antoni Masana (79 intervenciones) el 07/08/2008 13:38:31
En los casos raros lo mejor es hacerlo manualmente

Funcion MiRedondeo ( Valor as single)
Dim Entero, Resto, Decim, Resulta

Entero=INT(Valor)
Resto=(Valor*100) mod 100

IF Resto>= 0 and Resto <24 then Resulta=Valor+0.25
IF Resto>=25 and Resto <=37 then Resulta=Valor+0.25
IF Resto>=28 and Resto <=49 then Resulta=Valor+0.50
etc ...
MiRedondeo=Resulta
end function

Pero si lo que realmente deseas es redondear al cuarto de punto mejor esto

B=(Valor*100)
C=(INT( (B/25) + 0.5)
D=C * 0.25

Resultado el Valor de D

0.00 a 0.12 --> 0.00
0.13 a 0.37 --> 0.25
0.38 a 0.62 --> 0.50
0.03 a 0.87 --> 0.75
0.88 a 1.00 --> 1.00

Para el redondeo al alza hacer este cambio

B=(Valor*100) + 12
C=(INT( (B/25) + 0.5)
D=C * 0.25

0.01 a 0.25 --> 0.25
0.26 a 0.50 --> 0.50
0.51 a 0.75 --> 0.75
0.76 a 1.00 --> 1.00

Saludos
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:Redondear decimales

Publicado por agusti (41 intervenciones) el 07/08/2008 18:19:21
Muchísimas gracias por la ayuda, Antoni.
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:Redondear decimales

Publicado por agusti (41 intervenciones) el 21/08/2008 18:56:03
Hola Antoni,

Gracias por tu ayuda a redondear a cuarto de decimal me ha ido genial lo siguiente

int((((a*100)/25)+0.50)*0.25))

Sería mucho pedirte ayuda para redondear a mitad de decimal: 10.20 sería 10.00 mientras que 10.30 sería 10.50

Gracias por tu inestimable ayuda
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