Wrong result from IsNumeric() in VB.NET

2019-03-01 10:22发布

问题:

I have a function in VB.NET that loops through values and attempts to convert it to a decimal if IsNumeric is True,

Dim Value As String

If IsNumeric(Value) = True Then
    Rate = CType(Value, Decimal)  <--- bombing here
End If

I've found that when the function receives the value 603E43 IsNumeric evaluates to True for some reason and then bombs on the conversion. Why would IsNumeric be true in this case?

回答1:

See http://support.microsoft.com/kb/329488

IsNumeric returns true if it can be converted to a double which is true for 603E43 The value is however larger than what a decimal can hold

You could use the Decimal.TryParse funcion as a working alternative. See http://msdn.microsoft.com/en-us/library/9zbda557.aspx