moffice VBA中,1 / 0
抛出错误11,Sqr (-1)
抛出错误5。但是在VB中。. NET,1 / 0
不会抛出错误,其结果为"∞"。Math.Sqrt (-1)
也不抛出错误,其结果为"NaN"。为什么会这样呢?
因为规范是这么说的。
. netDouble
和VBA的Double
IEEE浮点值支持特殊值
- 正无穷,
- 负无穷,和
- NaN ("不是数字")。
然而,在VBA中,1 / 0
在VBA规范中定义为
- 不仅将结果设置为
NaN
,而且 - 也会引发错误:
因此,您可以将VBA如果这导致非零值除以0,则运行时错误11(除法
[…]
在上述任何一种情况下,如果该表达式在一个Let赋值和两个操作数都声明了Double类型产生的IEEE 754双特殊值(如正/负无穷)
Double
初始化为正无穷,如下所示:
Dim d As Double
On Error Resume Next
d = 1 / 0
On Error GoTo 0
Debug.Print d ' yields " inf"