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

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

aquí está la sintaxis exacta con Valor = número flotante
55
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
said
 
muchas gracias por su ayuda
0
gator
 
val2=(val1-int val1)"decimal"
val3=int val1"parte entera
verificar sintaxis
8
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
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
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
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
???
 
Je suis ici pour vous aider avec des traductions. Veuillez fournir le texte que vous souhaitez traduire.
0
!!!!
 
¡!!!!
0
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
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
aurélie
 
tu me mets un 5
-1