Parte entera y parte decimal en VB

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. Dec = (Valor - Int(Valor))
    Entero = Int(Valor)

    aquí está la sintaxis exacta con Valor = número flotante
    55
    1. 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. muchas gracias por su ayuda
      0
  2. val2=(val1-int val1)"decimal"
    val3=int val1"parte entera
    verificar sintaxis
    8
    1. 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
      1. 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. 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. 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
      2. 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
        1. ```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