2009-06-17 7 views
-1

Si Double.Parse (list_numbers.Item (i), possibledouble)vérifier si une chaîne est un double

list_numbers est une liste de chaînes

list_numbers.Item (i) = "0.000"

possibledouble est un double

débogueur retourne « chaîne d'entrée était pas dans un format correct »

je pensais que la double analyse syntaxique convertirait la chaîne en un double format de "0.0" mais cela me donne une erreur. S'il vous plaît aider

+1

Je pense que vous devriez changer la question du titre, votre demande quelque chose d'autre à l'intérieur – Fredou

Répondre

2

Votre code devrait probablement ressembler à ceci (Voir ci-dessous pour l'explication)

If Double.TryParse(list_numbers.Item(i), possibledouble) Then 

         Select Case possibledouble 
          Case 0 To 49.99 
           list_numbers.Item(i) = "" 
          Case 59 To 99.99 
           list_numbers.Item(i) = "1" 
          Case 100 To 199.99 
           list_numbers.Item(i) = "2" 
          Case Is > 200 
           list_numbers.Item(i) = "3" 
          Case Else 
           list_numbers.Item(i) = "n/a" 
         End Select 

End If 

Eh bien il y a quelques problèmes avec votre code pour autant que je peux voir, que je vous explique le comportement de votre vision . Tout d'abord, la méthode Double.Parse vous renvoie déjà un double pour cet élément, donc pas besoin de le reconvertir avec Cdbl plus tard.

Un autre problème majeur avec cette ligne est que si la méthode ne peut pas convertir la chaîne en double, elle déclenche une exception. Je devine un peu où dans votre code vous attrapez cette exception sans le savoir. Le dernier problème avec ceci est que je ne trouve pas de surcharge pour Double.Parse excepté la chaîne et le double qui m'indiquent que vous vouliez vraiment utiliser la méthode Double.TryParse et non la méthode Parse. TryParse retournera vrai ou faux si l'analyse réussit et mettra la valeur dans le double que vous avez spécifié si c'était le cas.

1

pour vous question;

qu'est-ce que list_numbers? (Tableau de contrôle de quelque chose d'autre??)

une petite amélioration, vous devez changer

Select Case CDbl(list_numbers.Item(i)) 

avec

Select Case possibledouble 

et pour vous question titre;

ISNUMERIC devrait être suffisant dans votre cas, je pense que

and you already got how to do it from here

1

... et vous avez une meilleure réponse sur l'affaire déclaration here. voir la réponse de jvanderh.

Questions connexes