转换为Double类型无效?

时间:2016-01-07 11:01:26

标签: .net vb.net type-conversion decimal maskedinput

我在VB.net中有错误 If CurrencyHolder.Text > 0 And CurrencyHolder.Text < 10000 Then

我使用的是Maskedinputbox 00000.00 当我执行我的代码并且Maskedinputbox为空时,我收到以下错误:

**尽我所能翻译!!!:$) signstreak的转换。输入double无效

我该如何解决这个问题?

2 个答案:

答案 0 :(得分: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

如果您当前的小数点分隔符与您要支持的小数点分隔符不同(您使用123,50€但是您必须解析的值是123.50$),则可以使用解析方法的重载。例如:

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

答案 1 :(得分:-1)

您可以使用val(): - 将字符串中包含的数字作为相应类型的数值返回。

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

<强> 警告

val()只考虑.来检查小数点分隔符,因为最终用户的小数点的lcoale样式不是.这不起作用