2009-06-17 151 views
-1

如果Double.Parse(list_numbers.Item(i)中,possibledouble)检查如果字符串是双

list_numbers是字符串的列表

list_numbers.Item(I)= “0.000”

possibledouble是双

调试器返回“输入字符串是不正确的格式”

我认为双解析会转换成字符串双倍格式的“0.0”,但它给了我一个错误。请帮忙

+1

我认为你应该改变标题问题,你问别的东西在里面 – Fredou 2009-06-17 23:34:01

回答

2

你的代码也许应该是这样的(参见下面的解释)

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 

那么有你的代码的一些问题,据我所看到的,我确信解释行为的视宁度。

首先,Double.Parse方法实际上已经为该项目返回了一个双精度值,因此稍后不需要再用Cdbl进行转换。

这条线的另一个更大的问题是,如果该方法不能将字符串转换为双精度型,则会引发异常。我猜你在代码中的某个位置捕捉异常而不知道它。

最后一个问题是,我实际上找不到Double.Parse的任何重载,除了字符串和double,这导致我相信你实际上是使用Double.TryParse方法而不是Parse方法。如果解析成功,TryParse将返回true或false,并将值设置为您指定的double值。

1

给你提问;

什么是list_numbers? (阵列控制别的东西吗??)

小的改进,你应该改变

Select Case CDbl(list_numbers.Item(i)) 

Select Case possibledouble 

,并为你的标题问题;

IsNumeric函数应该足够你的情况,我认为

and you already got how to do it from here

1

...你上了case语句here一个更好的答案。见杰文德的回答。

相关问题