Неверный результат от IsNumeric () в VB.NET - PullRequest
1 голос
/ 21 июля 2011

У меня есть функция в VB.NET, которая перебирает значения и пытается преобразовать их в десятичное число, если IsNumeric - True,

Dim Value As String

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

Я обнаружил, что когда функция получает значение 603E43 IsNumeric по какой-то причине оценивается как True, а затем бомбится при преобразовании. Почему IsNumeric будет правдой в этом случае?

1 Ответ

9 голосов
/ 21 июля 2011

См. http://support.microsoft.com/kb/329488

IsNumeric возвращает true, если оно может быть преобразовано в double , что верно для 603E43 Однако это значение больше, чем может содержать десятичное число

Вы можете использовать функцию Decimal.TryParse в качестве рабочей альтернативы. Увидеть http://msdn.microsoft.com/en-us/library/9zbda557.aspx

...