J'ai de la dificulté à convertir des strings en double.
Ex:
Dim d as double
' J'ai esseyé les fonctions suivant et ça ne fonctionne pas...
d = CDbl("1.20")
d = CStr("1.20")
d = Convert.ToDouble("1.20")
Quelqu'un a une solution ?
J'ai de la dificulté à convertir des strings en double.
Ex:
Dim d as double
' J'ai esseyé les fonctions suivant et ça ne fonctionne pas...
d = CDbl("1.20")
d = CStr("1.20")
d = Convert.ToDouble("1.20")
Quelqu'un a une solution ?
Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Dim d1 As Double Dim d2 As Double Dim d3 As Double Dim d4 As Double Dim d5 As Double Dim ImputString As String = "1.20" d1 = CDbl(ImputString) d2 = ImputString d3 = Convert.ToDouble(ImputString) Double.TryParse(ImputString, d4) d5 = Double.Parse(ImputString)
Quel genre d'exception as-tu ?
Aucune de ces méthodes fonctionnent...
J'obtiens un:
"InvalidCastException was unhandled: Conversion from string "1.20" to type 'Double' is not valid."
et pour d3 & d5 j'obtiens un:
"Input string was not in a correct format"
![]()
C'est normal chose que je n'explique pas mais qui m'as posé de grave problème la nuit pour dormir le parseur de double ne considère pas le point comme un séparateur decimal mais il utilise la VIRGULE.
Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim d1 As Double Dim d2 As Double Dim d3 As Double Dim d4 As Double Dim d5 As Double Dim ImputString As String = "1,20" d1 = CDbl(ImputString) d2 = ImputString d3 = Convert.ToDouble(ImputString) Double.TryParse(ImputString, d4) d5 = Double.Parse(ImputString)
Ça fonctionne merci !!!
C'est que Windows en français utilise la virgule par defaut comme symbole séparateur de décimal, tandis que Windows en anglais utilise le point.
On peut utiliser le point comme séparateur avec Windows français en changeant le symbole décimal dans les "Options régionales et linguistiques".
Ce qui m'inquiète c'est que VB voit une différence entre le point et la virgule, ce qui risque de causer des problèmes de compatibilité lorsque l'on exécute un programme développé en VB sur un Windows en français et sur un Windows en anglais.
Merci pour la solution !!
+1 pour ekinox17,
sinon tu peux modifier le format de la separation à l'aide de NumberDecimalSeparator
Code Vb.Net : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Dim ciClone As CultureInfo = CType(CultureInfo.InvariantCulture.Clone(), CultureInfo) ciClone.NumberFormat.NumberDecimalSeparator = "." Dim ImputString As String = "1.20" d3 = Convert.ToDouble(ImputString, ciClone) d5 = Double.Parse(ImputString, ciClone)
Super! Ça fonctionne aussi !
Et en plus, ça règle le problème d'incompatibilité entre les versions de Windows.
Merci Mehdi !!!
Merci mehdi,
J'ai honte j'avais pas chercher plus loin : j'avais utilisé
Code : Sélectionner tout - Visualiser dans une fenêtre à part Convert.ToDouble(MonDoubleAParser.Replace('.',','));
Tant mieu![]()
JB-Tech n'oublie pas de cliquer sur le bouton![]()
dsl j'ai pas encore compris
pouvez vous m'expliquer encore comment faire?
Partager