Sojojo
Messages postés41Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 7 septembre 2005
-
30 mai 2005 à 10:56
Sojojo
Messages postés41Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 7 septembre 2005
-
30 mai 2005 à 14:17
J'ai regarder un peu partout sur le Forum pour trouver une solution a mon problème mais rien n'y fait.
Je vous expliquer brièvement:
je dois saisir dans un textbox un nombre a virgule ou non, le problème est que les nombre a virgules sont transformés en entier ex: 50.2 => 50.
ca ce présente de cette forme :
valparamemission(1) = Val (text2.text)
G déjà remplacé Val() par CDbl() mais j'ai toujour le meme problème
si quelqu'un peu m'aider .
merci
Sojojo
Messages postés41Date d'inscriptionjeudi 14 avril 2005StatutMembreDernière intervention 7 septembre 2005 30 mai 2005 à 14:17
le problème c que la valeur que je rentre dans la zone de texte est un valeur qui va me servir a paramétrer un variateur de vitesse.
pour les paramètres, je transforme la valeur decimale en une valeur avecune virgule en fonction du signe, de l'exposant, et de la mantisse.
pour modifier le paramètre je dois faire l'inverse (càd: passer d'une virgule flottante a une valeur décimale sans virgule)
j'utilise c trois fonctions pour lire les valeurs. je ne sais pas faire l'inverse
'*******************************************
'Fonction: toBi
' Passe un nombre decimal en une valeur binaire.
'*******************************************
Function toBi(ByVal Valeur)
Dim bValeur() 'Valeur en Binaire
Dim ValeurMarque
Dim i, j
Dim MSBnr
ValeurMarque = Valeur
i = 1
Do
If Valeur > (2 ^ i) - 1 Then
i = i + 1
Else
MSBnr = i
Exit Do
End If
Loop Until i >= 64
If i >= 64 Then
MsgBox "ERREUR: Zone Dépassée"
End If
ReDim bValeur(MSBnr - 1)
For i = MSBnr - 1 To 0 Step -1
If Valeur / 2 ^ i > 1 Then
bValeur(i) = 1
Valeur = Valeur - 2 ^ i
ElseIf Valeur / 2 ^ i = 1 Then
bValeur(i) = 1
For j = i - 1 To 0 Step -1
bValeur(j) = 0
Next
Exit For
Else
bValeur(i) = 0
End If
Next
toBi = bValeur
End Function
'*******************************************
'Fonction: CalcFloat
' Calcul la valeur du le télégramme réponse
' pour la mettre en valeur flottante.
'*******************************************
Function CalcFloat(ByVal AntwDW)
Dim Vorz, Mant, Expo
Dim Dvorz, Dmant, Dexpo
Dim MantBi, i, j
Dim Mantlaenge
Dim interm2
Vorz = Fix(AntwDW / 2 ^ 31) 'Filtre le signe
Expo = Fix((AntwDW - Vorz * 2 ^ 31) / 2 ^ 23) 'Filtre l'exposant
Mant = AntwDW - Vorz * 2 ^ 31 - Expo * 2 ^ 23 'Filtre une mantisse
Dvorz = (-1) ^ Vorz
Dexpo = 2 ^ (Expo - 127)
MantBi = toBi(Mant)
If UBound(MantBi) < 22 Then
Mantlaenge = UBound(MantBi)
ReDim Preserve MantBi(22)
For i = 22 To Mantlaenge + 1 Step -1
MantBi(i) = 0
Next
End If
Dmant = 1
j = 1
For i = 22 To 0 Step -1
Dmant = Dmant + MantBi(i) * 1 / (2 ^ j)
j = j + 1
Next
interm2 = Dvorz * Dexpo * Dmant CalcFloat Round(interm2, 4) 'Round Renvoie un nombre arrondi à un nombre spécifié de positions décimales
End Function
'*******************************************
'Function: HtoD
' Passe en une valeur Hexadécimale en une valeur decimale
'*******************************************
Function HtoD(Zahl)
Dim arZahl As String
Dim lenZahl
Dim Ergebnis
Dim chiffre As Double
Dim i
Trim (Zahl)
lenZahl = Len(Zahl)
For i = 0 To lenZahl - 1
arZahl = Mid(Zahl, lenZahl - i, 1)
If arZahl "0" Then chiffre 0 * 16 ^ iIf arZahl "1" Then chiffre 1 * 16 ^ iIf arZahl "2" Then chiffre 2 * 16 ^ iIf arZahl "3" Then chiffre 3 * 16 ^ iIf arZahl "4" Then chiffre 4 * 16 ^ iIf arZahl "5" Then chiffre 5 * 16 ^ iIf arZahl "6" Then chiffre 6 * 16 ^ iIf arZahl "7" Then chiffre 7 * 16 ^ iIf arZahl "8" Then chiffre 8 * 16 ^ iIf arZahl "9" Then chiffre 9 * 16 ^ iIf arZahl "A" Or arZahl "a" Then chiffre = 10 * 16 ^ iIf arZahl "B" Or arZahl "b" Then chiffre = 10 * 16 ^ iIf arZahl "C" Or arZahl "c" Then chiffre = 10 * 16 ^ iIf arZahl "D" Or arZahl "d" Then chiffre = 10 * 16 ^ iIf arZahl "E" Or arZahl "e" Then chiffre = 10 * 16 ^ iIf arZahl "F" Or arZahl "f" Then chiffre = 10 * 16 ^ i'