1

示例代码:

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show(Val(TextBox1.Text), "Val of text input")
    End Sub
End Class

无论如何,出于简单的好奇心,我想知道为什么会这样?

从其他一些帖子和个人经验中,我知道不推荐使用 VAL(expression),它只是 VB6 时代的遗留函数。我尝试了所有其他字母,但没有一个引起这个问题,我还尝试了几个变体,它出现在 d 或 e 之后的任何数字加上那么多零(似乎是它的乘法)。我知道该值可能会溢出放置它的数据类型 VAL。我看到 e 是子过程的默认变量,所以这可能就是原因,但我无法弄清楚 d 的任何逻辑。

请说明我对 VB.NET 非常陌生,刚刚完成了大学课程,还没有构建任何实际的应用程序。此外,我们的老师似乎没有教我们我非常感兴趣的错误处理,因为我目前的工作情况有一些相当老的应用程序有问题。还想要任何推荐的错误处理文章/读物

4

1 回答 1

6

Val() 函数“将字符串中包含的数字作为适当类型的数值返回”(引自http://msdn.microsoft.com/en-us/library/k7beh1x9(v=vs.71)。 .aspx)。如果你设置一个像 5exxx 这样的字符串值,它意味着 5 * 10^xxx; 但请注意:该函数返回一个双精度,双精度大约从 ±5.0 x 10^-324 到 ±1.7 x 10^308;因此,例如,字符串 5e307 有效,但 5e308 无效,返回溢出。如果您使用其他一些字母“函数在第一个字符处停止读取字符串,它无法识别为数字的一部分”,因此它不会返回溢出。

我希望它是有帮助的。有一个美好的新年!

于 2012-12-31T21:17:21.457 回答