Redondeo hacia arriba VB 6.0
-
Hola disculpen, no se si esta este post ya, lo q pasa es q no tengo mucho tiempo para buscar, espero q alguien me pueda ayudar con mi problema resulta q tengo un numero y el usuario decide si dividirlo por 10 o por 12 y cuando le da click al boton el tiene dividir el numero por el dato elegido, la cuestion es q el numero resultante no puede tener decimales y siempre se debe redondear para arriba o sea si me da
2,00000001 =====> 3
2,99999999 =====> 3
Es pero me puedan ayudar gracias -
Usá esta función
Function AsymUp(ByVal X As Double, Optional ByVal Factor As Double = 1) As Double
Dim Temp As Double
Temp = Int(X * Factor)
AsymUp = (Temp + IIf(X = Temp, 0, 1)) / Factor
End Function
la llamas pasando el número a redondear
a = asymup(numero a redondear) -
la verdad no entendi bien para que la complicas
Te doy 1 ejemplo;
'47 / 3 = 15.3333333333333333333333333....
'En el text1 pone "47"
Dim a As Double
a = Text1 / 3
If a > Int(a) Then
a = a + + ' no me acuerdo si era valido ++ para visual basic,creo q no si no pone a = a+1
a = Int(a)
End If
MsgBox a
End Sub
Si lo queres hacer funcion tonces pone;
Public Function Redondear(Numero As Doble)
Dim a As Double
a = Numero / 3
If a > Int(a) Then
a = a + + ' no me acuerdo si era valido ++ para visual basic,creo q no si no pone a = a+1
a = Int(a)
End If
MsgBox a
End Sub
Y para llamar a la funcion es
Private Sub Command1_Click()
Redondear Text1 'En el text1 pone 47
End Sub
-
Elemental mi querido Watson, como postie yo, use la funcion INT que tambiene esta en visual basic.
Este es un algoritmo en VB; para redondear el resultado de la division de 2 numeros;
El mismo,Pide al Usuario que ingrese el Divisor y el Dividendo, ademas verifica los datos ingresados,
toma una accion para el objetivo y otras por si el usuario no ingresa nada o Ingresa textosEl DO - LOOP; esta para que si el usuario ingresa Texto y texto, o Vacio y Vacio, o Vacio y Texto y viceversa, de ser asi solo mostrara el mensaje correspondiente y Saldra del IF y se encontrara con el Loop y Volvera a lo mismo Hasta que el usuario finalmente me Ingrese Solo NumerosCódigo:Option Explicit Dim Resultado As Integer Dim Ingresado1 As Integer Dim Ingresado2 As Integer --------------------------------------------------------------------------------------------------------------- Private Sub Command1_Click() Do Ingresado1 = InputBox("Ingrese Un Numero", "Ingreso de Numeros para su redondeo") 'Pide al usuario que ingrese la primera variable que sera el Dividendo Ingresado2 = InputBox("Ingrese Un Numero", "Ingreso de Numeros por el cual dividira") 'Pide al usuario que ingrese la segunda variable que sera el Divisor If IsNumeric(Ingresado1) = True And IsNumeric(Ingresado2) = True Then 'Verifica si las variables son números Resultado = Ingresado1 / Ingresado2 'Siendo Verdadero el IF; a Resultado se le Asigna la division del primer numero Ingresado sobre el segundo numero ingresado MsgBox Int(Resultado) 'Muestra el resultado por pantalla Exit Sub 'Termina y sale del Sub para Salir del Do-Loop que si no nos pediria infinitas veces que repitamos el proceso ElseIf Ingresado1 = Empty Or Ingresado2 = Empty Then MsgBox "No ingreso nada T_T en uno de los campos" 'Muestra un mensaje en caso de que las variables sean un campo "VACIO". Es decir que no se ingreso absolutamente nada Else MsgBox "Ingresaste un texto, en alguno de los 2 campos =/" 'Muestra un mensaje en el caso de que las variables no sean; Ni Números ni, Ni Campos Vacios End If 'Sale del If Loop End Sub
PD; El DO - LOOP, es como un While , es un Bucle pero que no tiene Condicion ( en este caso. Por que puede tener una condicion ) y por ende siempre realizara el ciclo en su interior INFINIATAS VECES.
Ergo, debes poner un Exit Sub o End o Algun Goto --- >:Label, si no el programa correra hasta que se funda tu pc o se produsca un OverFlow: ( el overflow seguro llega antes)
-
En ese caso mini tutorial, pido al usuario que ingrese el dividendo y el divisor, ahi puse que Valide los Datos, osea uno lo puede hacer super simple no?, pero ahi lo hize completo para que despues lo implementen bien, ya que por ahi un "logi" te pone en ves de numero "COMELA" y obvio se va a producir un error en tiempo de ejecucion, cosa que no queda lindo
Forma super ultra simple; ( no puedo creer q a esta b**** le demos tanta bola xD, esima en VB )y te sale un mensajito con "1" y un boton aceptar y : Be happyCódigo:Private Sub Form_Load() Dim A As Integer A = 1.33333 If A > Int(A) Then Print Int(A+1) End If End Sub
ahi funca bien , pero si le pedis al usuario que ingrese A: y te ingresa "HOLA", cagaste. por que no validaste nada y sale Runtime Error 11, no se si era 11 ,4 ,5 o 6 uno de esos es
