Redondeo hacia arriba VB 6.0

      • 90
      • mensajes
      • miembro desde
      • 22/10/05
    #1 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

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    9 comentarios / 51536 Visitas

      • 25
      • mensajes
      • miembro desde
      • 15/08/05
    19/01/2009
    #2 Re: Redondeo hacia arriba VB 6.0

    Proba con la función round(valor, 1)

      • 90
      • mensajes
      • miembro desde
      • 22/10/05
    20/01/2009
    #3 Re: Redondeo hacia arriba VB 6.0

    ya lo probe pero me lo redondea hacia abajo :S :S

      • 25
      • mensajes
      • miembro desde
      • 15/08/05
    21/01/2009
    #4 Re: Redondeo hacia arriba VB 6.0

    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)

      • 1,576
      • mensajes
      • miembro desde
      • 18/01/08
    22/01/2009
    #5 Re: Redondeo hacia arriba VB 6.0
    Cita Escrito por Firefighter Ver mensaje
    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

      • 90
      • mensajes
      • miembro desde
      • 22/10/05
    23/01/2009
    #6 Re: Redondeo hacia arriba VB 6.0

    Hola gente bueno muchisimas gracias por contestar y la verdad me anduvieron muy bien, la verdad gracias, un abrazo

      • 9,079
      • mensajes
      • miembro desde
      • 27/11/07
    25/01/2009
    #7 Re: Redondeo hacia arriba VB 6.0

    Para eso, hay una función general para cualquier lenguaje:
    - ParteEntera(- x)
    En lugar de "ParteEntera" hay que poner la función correspondiente al lenguaje. Por ejemplo, en C:
    - (int)(- x)

      • 1,576
      • mensajes
      • miembro desde
      • 18/01/08
    25/01/2009
    #8 Re: Redondeo hacia arriba VB 6.0
    Cita Escrito por Kryptonyte Ver mensaje
    Para eso, hay una función general para cualquier lenguaje:
    - ParteEntera(- x)
    En lugar de "ParteEntera" hay que poner la función correspondiente al lenguaje. Por ejemplo, en C:
    - (int)(- x)
    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 textos

    Có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
    
    El 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 Numeros

    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 )
      • 9,079
      • mensajes
      • miembro desde
      • 27/11/07
    25/01/2009
    #9 Re: Redondeo hacia arriba VB 6.0

    OK, pero fijate que se puede hacer más simple, como lo postié:
    Invertís el signo, sacás la parte entera, y volvés a invertir el signo.

      • 1,576
      • mensajes
      • miembro desde
      • 18/01/08
    26/01/2009
    #10 Re: Redondeo hacia arriba VB 6.0
    Cita Escrito por Kryptonyte Ver mensaje
    OK, pero fijate que se puede hacer más simple, como lo postié:
    Invertís el signo, sacás la parte entera, y volvés a invertir el signo.
    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 )

    Có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
    y te sale un mensajito con "1" y un boton aceptar y : Be happy

    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
IR ARRIBA