2016-01-07 30 views
1

我有一個錯誤在VB.net If CurrencyHolder.Text > 0 And CurrencyHolder.Text < 10000 Then轉換爲Double類型無效?

我使用的是Maskedinputbox 00000.00 當我執行我的代碼和Maskedinputbox是空的,我得到以下錯誤:

**盡我所能來翻譯它!!!:$) Signstreak的轉換。輸入double無效

我該如何解決這個問題?

回答

-1

您可以使用val(): - 返回包含在字符串中的數字作爲適當類型的數字值

If Val(CurrencyHolder.Text) > 0 AndAlso Val(CurrencyHolder.Text) < 1000 Then 
      'code 
     End If 

警告

val()只考慮.檢查小數點分隔櫃面小數點終端用戶的lcoale風格比.其他這是行不通的

+0

你好Wingedpanther,這個工程!但我不知道這是爲什麼起作用。你能解釋一下給我:)? – TheBlinderCoder

+0

@TheBlinderCoder更新! –

+0

但這會導致運行時錯誤,如果用戶輸入無法投射的字符 – 5uperdan

3

使用Double.Parse/Double.TryParseDecimal.Parse/Decimal.TryParse。對於貨幣Decimal是正確的類型。

Dim currency as Decimal 
Dim valid as Boolean = Decimal.TryParse(CurrencyHolder.Text, currency) 

If valid AndAlso currency > 0 AndAlso currency < 10000 Then 
    ' ... ' 
End If 

https://msdn.microsoft.com/en-us/library/system.decimal.tryparse(v=vs.110).aspx

如果您當前的小數點分隔符是比你想支持一個(FE使用123,50€但是你要分析是123.50$值),可以使用解析超負荷不同方法。例如:

Dim valid As Boolean = Decimal.TryParse(CurrencyHolder.Text, NumberStyles.Currency, NumberFormatInfo.InvariantInfo, currency) 
+0

+1這應該是公認的答案,並且您已經正確地選出了Op應該使用小數日期類型 –

相關問題