us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
12 sept. 2011 à 19:03
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 2016
-
13 sept. 2011 à 14:29
Bonjour,
Tout est dans la question.
"Conversion String en Double proprement en vb.net"
J'ai beau essayer plusieurs machins, rien n'est vraiment propre... Et je ne vois pas comment faire...
Voici une base :
' Conversion d'une String en Double
Function CSD(ByVal NombreString As String) As Double
Try
Return Double.Parse(NombreString)
' Return Convert.ToDouble(NombreString.Replace(".", ","))
' Return CDbl(NombreString)
Catch
Return 0
End Try
End Function
Mais cela ne renvoi toujours dans le debuggeur un message, même si le résultat est celui que je veux...
En gros, je veux aussi que si la conversion de la string n'est pas un nombre valide, il ne renvoi zéro, mais sans message d'erreur " Une exception de première chance de type 'System.InvalidCastException' s'est produite dans Microsoft.VisualBasic.dll "... affreux, affreux, affreux...
Amicalement,
Us.
A voir également:
Vba string to double
String to double vba - Meilleures réponses
Excel vba convert string to double - Meilleures réponses
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 12 sept. 2011 à 19:15
Bonjour,
Un problème de séparateur ? (je vois tes lignes en commentaire)
Et si tu essayais quelque-chose genre :
Dim ciClone As CultureInfo = CType(CultureInfo.InvariantCulture.Clone(), CultureInfo)
ciClone.NumberFormat.NumberDecimalSeparator = "."
Dim toto As String = "1.20"
dim res1 as double, res2 as double
res1 = Convert.ToDouble(toto, ciClone)
res2 = Double.Parse(toto, ciClone)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
NHenry
Messages postés15065Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention21 mai 2023157 12 sept. 2011 à 19:19
Bonjour,
Sinon, il y a aussi Double.TryParse pour gérer les cas d'erreur.
---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list ---
c'est bon si le decimal séparateur est ,
mais si c'est un .
peut etre comme ça
Function CSD(ByVal NombreString As String) As Double
Dim sp As String
sp = 1 / 2
sp = sp.Substring(1, 1)
CSD = 0
NombreString = NombreString.Replace(".", sp).ToString()
Double.TryParse(NombreString, CSD)
End Function
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 13 sept. 2011 à 14:29
Re,
Yes
' Conversion d'une String en Double
Function CSD(ByVal NombreString As String) As Double
CSD = 0
Double.TryParse(NombreString.Replace("."c, (1 / 2).ToString.Substring(1, 1)).ToString(), CSD)
End Function
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 12 sept. 2011 à 19:53
Okay, j'ai trouvé, enfin...
' Conversion d'une String en Double
Function CSD(ByVal NombreString As String) As Double
CSD = 0
NombreString = NombreString.Replace(".", ",").ToString()
Double.TryParse(NombreString, CSD)
End Function
Et "CultureInfo" c'est la référence System.globalization.... Il fallait le trouver celui-là .
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 12 sept. 2011 à 23:57
Bonsoir,
Ah, oui... je n'y avais pas pensé dans l'autre sens. Pour les quelques anglais qui utilisent le "point". D'où l'intérêt de "CultureInfo " aussi.
Par esprit de 'contraction' :
' Conversion d'une String en Double
Function CSD(ByVal NombreString As String) As Double
CSD = 0
NombreString = NombreString.Replace(".", (1 / 2).ToString.Substring(1, 1)).ToString()
Double.TryParse(NombreString, CSD)
End Function
us_30
Messages postés2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 13 sept. 2011 à 00:17
Ouais, parce que j'aime bien... Encore plus court :
' Conversion d'une String en Double
Function CSD(ByVal NombreString As String) As Double
CSD = 0
Double.TryParse(NombreString.Replace(CChar("."), (1 / 2).ToString.Substring(1, 1)).ToString(), CSD)
End Function
et respecte l'option strict en plus ! Je ne vois pas mieux ensuite...