decimales y demas yerbas

      • 64
      • mensajes
      • miembro desde
      • 27/07/06
    24/10/2006
    #1 decimales y demas yerbas

    Quisiera saber cual es la funcion para pasar la parte decimal de un numero decimal (balga la redundancia) y otro numero supongamos entero.
    ej:
    si tengo 4.32
    pasar el 32 a otra variable.

    Si hay alguna forma de limitar la cantidad de digitos, eso seria supremo

    Desde ya gracias
    Rulo

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

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

    5 comentarios / 11765 Visitas

      • 2,511
      • mensajes
      • miembro desde
      • 03/01/05
    24/10/2006
    #2 Re: decimales y demas yerbas

    No se si sera la mejor forma de hacerlo , pero funciona , agrega dos textbox y un boton y probalo

    Código:
     
    Private Sub Command1_Click()
    
    a = Val(Text1.Text)     'el numero original
    
    b = a - Int(a)       'la parte decimal ( con cero y la coma ) ( al original le restas la parte entera )
    
    c = Right$(Str$(b), Len(Str$(b)) - 2)      ' se le saca el cero y la coma de la parte izquierda , en realidad tomas lo de la derecha menos los dos primeros de la izquierda
    
    d = Left$((c), 4)     ' tomas lo primeros 4 numero de la izquierda ,  suponiendo que se dejan 4 decimales
    
    Text2.Text = d   ' el resultado
     
    End Sub
      • 64
      • mensajes
      • miembro desde
      • 27/07/06
    25/10/2006
    #3 Re: decimales y demas yerbas

    muchas gracias
    Rulo

      • 813
      • mensajes
      • miembro desde
      • 10/04/03
    25/10/2006
    #4 Re: decimales y demas yerbas

    si sabes el que la parte decimal tiene un ancho fijo, directamente, podes hacer un Right$(, AnchoFijoDecimal). Por ej:


    A = 154.9535
    Right$(A,4)
    Eso te devuelve el 9535.
    Ahora, si no sabes el ancho fijo lo que te dijo bahiense puede servir... salvo que para obtener un decimal, no necesitas usar 4 variables. Yo lo haria de la siguiente manera.

    'Pasamos un decimal de doble precision, y devolvemos un long
    Public Function DevolverDecimal(sNroCompleto As Double) As Long

    Dim x As Long
    Dim sLargo As String

    'inicializamos la variable x
    x = 1

    'Obtenemos el largo del numero que se paso, para poder recorrerlo
    sLargo = Len(CStr(sNroCompleto))

    Do
    'recorremos todo string de a un caracter para ver donde esta el
    'separador decimal
    If Mid$(sNroCompleto, x, 1) = "." Or Mid$(sNroCompleto, x, 1) = "," Then
    'Si estamos en el valor decimal, salimos del bucle
    Exit Do
    End If
    x = x + 1
    Loop Until x >= sLargo

    'Se devuelve solo la parte decimal
    DevolverDecimal = CLng(Right$(sNroCompleto, sLargo - x))

    End Function
      • 1,549
      • mensajes
      • miembro desde
      • 11/05/05
    28/10/2006
    #5 Re: decimales y demas yerbas

    Podés utilizar la función InStr() para achicar el algoritmo:

    Código:
    Function ObtenerDecimales(ByVal n As Double) As String
        Dim pos As Long
    
        pos = InStr(n, ".") + InStr(n, ",")
        If pos <> 0 Then ObtenerDecimales = Mid$(n, pos + 1)
    End Function
    Nota: te conviene devolver un String, ya que si devolvés un Long podría ocurrir un error de desbordamiento.
      • 64
      • mensajes
      • miembro desde
      • 27/07/06
    28/10/2006
    #6 Re: decimales y demas yerbas

    interesante la ultima nota. Se agradece.
    Rulo