【发布时间】:2011-07-21 00:34:25
【问题描述】:
如果IsNumeric 为真,我在VB.NET 中有一个函数循环遍历值并尝试将其转换为小数,
Dim Value As String
If IsNumeric(Value) = True Then
Rate = CType(Value, Decimal) <--- bombing here
End If
我发现,当函数接收到值 603E43 IsNumeric 时,由于某种原因,它的计算结果为 True,然后在转换时发生炸弹。为什么IsNumeric 在这种情况下会是真的?
【问题讨论】:
-
因为
603E43是浮点值的半标准数字表示,特别是:603*10^43。我不知道CType是如何工作的(因为我不使用VB.NET ;-),但在C# 中我可能会使用decimal.TryParse。IsNumeric可能与 SQL Server“数字”规则更相关,其中还包括前导美元符号等。我似乎找不到任何官方的“完整”规则。 -
轰炸是什么意思?什么是错误消息/异常?
-
也许看到这个VB6 SO question about IsNumeric ...我假设VB.NET的IsNumeric是一个很好的克隆;-)
-
@pst,啊,听起来不错。非常感谢您提供的信息。
-
另一方面,您不需要
= True部分。就说If IsNumeric(Value) Then ...