Partie entière et partie decimale en VB

Fermé
tiger - 22 mai 2004 à 11:34
 said - 5 avril 2018 à 09:10
bonjour,
qui peut m'aider à extraire la partie entière à part
et la partie decimale à part d'un nombre flottant dans un pgr VB,
merci pour votre aide.

7 réponses

Dec = (Valeur - Int(Valeur))
Entier = Int(Valeur)

voici la syntaxe exacte avec Valeur = nb flottant
55
Bonjour,

Cette méthode fonctionne en général, mais pour des nombres trop grands cela ne fonctionnera pas
Integer : Contient des entiers 32 bits (4 octets) signés dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647.

Si le nombre a tester est en dehors de ces limites, il faut trouver une autre solution (que je cherche actuellement :S)
0
merci infiniment pour votre aide
0
val2=(val1-int val1)"décimale"
val3=int val1"partie entière
syntaxe à vérifier
8
Chrysostome Messages postés 121 Date d'inscription vendredi 17 octobre 2003 Statut Membre Dernière intervention 14 octobre 2016 14
10 oct. 2016 à 16:17
Trois autres solutions (mais qui fonctionnent celles-là):

Mettre 3 boutons sur la frame:

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


Ou (Universel pour répondre à 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


Ou pour faire scientifique et Universel (résultats différents!):

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
30 oct. 2011 à 17:57
R = A / B
Pos = InStr(1, R, ",") ' recherche de l'existence de la virgule dans R
If Pos <> 0 Then ' si la virgule existe
E= CInt(Left(R, Pos - 1)) ' alors récupère les chiffres avant la virgule (partie entière)
Tai1 = Len(R) - (Pos + 1) ' calcul de la longueur après la virgule
D = CInt(Right(R, Tai1)) ' récupère les chiffres après la virgule (partie décimale)
End If
0
Tai1 = Len(R) - (Pos + 1) est egal à 0
donc on ne peut pas recuperer les chiffres apres la virgule,la formule exact est :
Tai1 = Len(R) - (Pos)
0
En plus c'est vraiment débile comme méthode car le bon fonctionnement de la fonction dépend des paramètres régionnaux du PC... Sur un PC américain par exemple, le séparateur est le "." ...
Après, c'est peut-être la manière la moins intelligente d'arriver à ce genre de résultat : passer par une conversion en chaine puis en num... Heureusement que les processeurs actuels vont vite, mais il suffit de vouloir passer ce traitement 1000000 de fois pour se rendre compte de combien c'est lent et lourd pour le PC...
Essayez de donner du code qui soit un peu sérieux...
0
?????
0
!!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Echati Said Messages postés 1 Date d'inscription mardi 11 juin 2013 Statut Membre Dernière intervention 11 juin 2013
11 juin 2013 à 13:48
Private Function IntDec(ByVal strch As String, ByVal valeur() As Integer) As Integer()
Dim Pos As Integer = InStr(strch, ".") ' recherche de l'existence du point dans R
If Pos <> 0 Then ' 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)
Else
valeur(0) = CInt(Int(strch))
valeur(1) = 0
End If
Return valeur
End Function
0
NombreFlottant = 2.11
Dim Extraire() As String
Extraire = Split(NombreFlottant, ",", 2)
MsgBox (Extraire(0)) ' pour extraire l'entier
MsgBox (Extraire(1)) ' pour extraire les décimales

C'est simple comme bonjour..
0
tu mes un 5
-1