Decimale

osfou Messages postés 10 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 20 septembre 2006 - 4 août 2006 à 14:01
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018 - 4 août 2006 à 19:44
comment isoler la partie decimale d'un nombre afin de ne modifier que cette partie sans toucher a la valeur entiere

8 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2006 à 14:11
a = 25.32
decimalPart = a - fix(a)

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
4 août 2006 à 14:11
Pour utiliser que la partie décimale dans un calcul en code donc ?

La première qui me vient à l'esprit :

Tu récupères justement la partie entière de ton nombre dans une variable, avec la fonction Int, partie entière que tu soustraits à ton nombre.
Il te reste donc la partie décimale.
Tu appliques ton traitement.
Puis tu ajoutes à nouveau ton entier quand tu as fini ton traitement sur la partie décimale.

Voili, voilou.

En fonction de ce que tu veux faire sur la partie décimale, tu as peut être mieux à faire, mais il faudrait en dire un peu plus dans ce cas ^^.

Molenn.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 août 2006 à 14:14
Salut


Regarde ceci en l'adaptant a tes besoins




Dim StrTemp As String 
Dim TaValeur As Single 
Dim ValeurIsolee As Single 

TaValeur =  3.1456 

StrTemp =  CStr (TaValeur) 
StrTemp  = "0" & Mid(StrTemp, InStr(1, StrTemp, ".")) 

ValeurIsolee = CSng(StrTemp) 

MsgBox ValeurIsolee 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       














@+, Julien
Pensez: Règlement/STRONG>
0
osfou Messages postés 10 Date d'inscription mercredi 12 juillet 2006 Statut Membre Dernière intervention 20 septembre 2006
4 août 2006 à 14:23
merci bien c tout a fait ce qu'il me fallait            impec
0

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

Posez votre question
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
4 août 2006 à 14:27
Salut
Renfield> le résultat de :
a = 25.32
decimalPart = a - fix(a)
donne : 0.3199997
Je vote donc pour la solution de <jrivet>, plus longue mais apparemment plus fiable.
0
Dolphin Boy Messages postés 630 Date d'inscription vendredi 5 mai 2006 Statut Membre Dernière intervention 17 février 2007
4 août 2006 à 14:40
En fait, ça donne bien 0.32 chez moi mais uniquement si a est de type Currency.
Problème de processeur ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2006 à 14:55
effectivement, pas précis pour des Single :

? csng(25.32)- 25
 0.3199997

faire un Instr "." est dangereux... on peut avoir un autre séparateur décimal...

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
erefdatacomputing Messages postés 165 Date d'inscription mardi 7 mars 2006 Statut Membre Dernière intervention 24 avril 2018
4 août 2006 à 19:44
Toutes ces solutions sont correctes mais imprécises arrivée à un certain moment.
Généralement quand on arrive à 6, 7 ou 8 chiffres après la virgule, on a un résultat qui devient approximatif.

Essaye cela (dans un CommandButton): 

Private Sub Command1_Click()

Dim valdecimale As String
Dim result As String
Dim a As Double
Dim i As Double




valdecimale = "123.456789012346789012345678901234567890123456789"
'soit 45 chiffres après la virgule ....  et je me suis arrêté là !!!!
a = Len(valdecimale)






'boucle de recherche du séparateur décimal
For i = 1 To a
If Mid(valdecimale, i, 1) = "." Then GoTo separateur
Next i





MsgBox "Pas de chiffres après la virgule !!"
'si la boucle est finie sans aller à 'separateur' on à donc içi une valeur entière'
GoTo attente





separateur:
'affichage de la partie qui se trouve après le séparateur décimal
result = Mid(valdecimale, i + 1, a - i)
MsgBox result





attente:
End Sub



à plus !!!!!   

Je comprends vite mais il faut m'expliquer longtemps et tout en détails !!!
0
Rejoignez-nous