Visual Basic - redondear

Life is soft - evento anual de software empresarial
 
Vista:

redondear

Publicado por pp (1 intervención) el 08/12/2006 12:59:31
hola tengo el siguiente codigo para redondear hacia arriba. ejemplo de 1,1 a 2 de 1,6 a 2....
Dim Precio As Variant
Dim Valor As Variant
Valor = database.rs!ca
Precio = Split(Valor, ".")
If CInt(Precio(1)) >= 1 Then
Precio(0) = CStr(CInt(Precio(0)) + 1)
Precio(1) = "00"
End If
Valor = Precio(0) & "." & Precio(1)
database.rs!ca = Valor
funciona bien pero tengo un problema, cuando el valor a redondear esmpieza con 0,00 no funciona, ejemplo si es 0,0035 pone 4 no se como resolverlo si alguien sabe que responda...gracias...
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

Publicado por AlbertoV (200 intervenciones) el 08/12/2006 13:38:03
Tu problema es que estás usando Cint, que es para convertir a Integer un valor numérico.
Para redondear en la forma que vos querés (1,1 = 2) podés usar Int(1.1), pero en ese caso te daría 1 y no 2, pues Int solo desecha los decimales. La solución que le encuentro es que le sumes uno a tu número al aplicarle Int, es decir Int(1.1 + 1), o Int(<variable> + 1)
Fijate también la función Round(<Nº>, x) donde x es la cantidad de decimales, que para tu caso sería cero. Pero solamente te redondeará al superior cuando la fracción es 5 o más.
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

Publicado por Alex (40 intervenciones) el 08/12/2006 13:58:20
Me parece que a eso mismo ya te contesté hace unos días, por si no lo has leido, te lo vuelvo a poner:

Dim x As Double
x = Text1.Text
If x > Fix(x) Then x = Fix(x) + 1
Text1.Text = x

En este caso la variable x está en un TextBox, pero podría ser un registro de la BD.
Aplícalo a tu caso.
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
Imágen de perfil de alberto
Val: 594
Bronce
Ha mantenido su posición en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

RE:redondear

Publicado por alberto (359 intervenciones) el 09/12/2006 13:33:44
No se claramente que tipo de redondeo se quiere realizar en este caso.
Si es por defecto (eliminando decimales sobrantes) la función a usar es fix, si el redondeo se quiere realizar al valor mas proximo, podría usarse round, pero hay que tener en cuenta que round (y tambien CInt, y Clng) en el caso extremo redondea al par mas proximo (round(2.5)=2 y round(3.5)=4), si en ese caso queremos que redondee por exceso debemos usar format (format(2.5,"0")="3" y format(3.5,"0")="4")
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