Parte entera y parte decimal en VB

tiger -  
 said -
Hola,
¿quién puede ayudarme a extraer la parte entera por separado
y la parte decimal por separado de un número flotante en un programa VB?
gracias por su ayuda.

7 respuestas

  1. abc
     
    Dec = (Valor - Int(Valor))
    Entero = Int(Valor)

    aquí está la sintaxis exacta con Valor = número flotante
    55
    1. spos
       
      Hola,

      Este método funciona en general, pero para números demasiado grandes no funcionará.
      Entero: Contiene enteros de 32 bits (4 bytes) con signo, cuya valor está entre -2 147 483 648 y 2 147 483 647.

      Si el número a probar está fuera de estos límites, hay que encontrar otra solución (que estoy buscando actualmente :S)
      0
    2. said
       
      muchas gracias por su ayuda
      0
  2. gator
     
    val2=(val1-int val1)"decimal"
    val3=int val1"parte entera
    verificar sintaxis
    8
  3. Chrysostome Mensajes publicados 121 Fecha de registro   Estado Miembro Última intervención   14
     
    Tres soluciones más (pero estas funcionan):

    Colocar 3 botones en el marco:

    Private Sub Command_Click()
    Dim nb As Double
    Dim a1 As String
    Dim dec_nb As String
    Dim ent_nb As String

    nb = 42653.6207986111

    a1 = CStr(nb)

    dec_nb = CDbl(Right(a1, Len(a1) - InStr(1, a1, ",")))
    MsgBox dec_nb ' = "6207986111"

    ent_nb = CDbl(Left(a1, Len(a1) - (Len(a1) - InStr(1, a1, ",") + 1)))
    MsgBox ent_nb ' = 42653

    End Sub

    O (Universal para responder a rindher)

    Private Sub Command1_Click()
    Dim nb As Double
    Dim a As String
    Dim dec_nb As String
    Dim ent_nb As String

    nb = 42653.6207986111

    a = CStr(nb)

    dec_nb = Right(a, Len(a) - Len(CStr(Int(a))) - 1)
    MsgBox dec_nb ' = "6207986111"

    ent_nb = Left(a, Len(a) - Len(dec_nb) - 1)
    MsgBox ent_nb ' = 42653

    End Sub

    O para hacerlo científico y Universal (resultados diferentes!):

    Private Sub Command2_Click()
    Dim nb As Double
    Dim a As String
    Dim dec_nb As Double
    Dim ent_nb_s As String
    Dim ent_nb As Double

    nb = 42653.6207986111

    ent_nb = Int(nb)
    MsgBox ent_nb ' = 42653

    ent_nb_s = nb - Int(nb)

    dec_nb = ent_nb_s * 10 ^ (Len(ent_nb_s) - 2)
    MsgBox dec_nb ' = 620798611096689

    End Sub
    2
  4. Son Altesse
     
    R = A / B
    Pos = InStr(1, R, ",") ' búsqueda de la existencia de la coma en R
    If Pos <> 0 Then ' si existe la coma
    E= CInt(Left(R, Pos - 1)) ' entonces recupera los números antes de la coma (parte entera)
    Tai1 = Len(R) - (Pos + 1) ' cálculo de la longitud después de la coma
    D = CInt(Right(R, Tai1)) ' recupera los números después de la coma (parte decimal)
    End If
    0
    1. initie
       
      Tai1 = Len(R) - (Pos + 1) es igual a 0
      por lo tanto no se pueden recuperar los números después de la coma, la fórmula exacta es:
      Tai1 = Len(R) - (Pos)
      0
    2. rindher
       
      Además, realmente es una metodología estúpida porque el buen funcionamiento de la función depende de los parámetros regionales del PC... En un PC americano, por ejemplo, el separador es el "." ...
      Después, tal vez sea el método menos inteligente para llegar a este tipo de resultado: pasar por una conversión a cadena y luego a num... Menos mal que los procesadores actuales son rápidos, pero basta con querer realizar este tratamiento 1000000 de veces para darse cuenta de lo lento y pesado que es para el PC...
      Intenta proporcionar un código que sea un poco serio...
      0
    3. ???
       
      Je suis ici pour vous aider avec des traductions. Veuillez fournir le texte que vous souhaitez traduire.
      0
    4. !!!!
       
      ¡!!!!
      0
  5. Echati Said Mensajes publicados 1 Estado Miembro
     
    Fonction privée IntDec(ByVal strch As String, ByVal valeur() As Integer) Comme Integer()
    Dim Pos Comme Integer = InStr(strch, ".") ' recherche de l'existence du point dans R
    Si Pos <> 0 Alors ' si le point existe
    valeur(0) = CInt(Int(strch)) ' alors récupère les chiffres avant le point (partie entière)
    valeur(1) = CInt(CStr(strch).Substring(Pos, 2)) ' récupère les chiffres après le point (partie décimale)
    Sinon
    valeur(0) = CInt(Int(strch))
    valeur(1) = 0
    Fin Si
    Retour valeur
    Fin Fonction
    0
  6. mustaphone
     
    ```html NombreFlottant = 2.11
    Dim Extraer() As String
    Extraer = Split(NombreFlottant, ",", 2)
    MsgBox (Extraer(0)) ' para extraer el entero
    MsgBox (Extraer(1)) ' para extraer los decimales

    Es tan simple como saludar.. ```
    0