2009-06-17 150 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一個更好的答案。見傑文德的回答。

相關問題