根据MSDN,对于Variant数据类型:
"对于正值,数值数据可以是-1.797693134862315E308到-4.94066E-324之间的任何整数或实数值,对于正值,数值可以是4.94066E-324到1.797693134862315E308."
但是,即使计算后的所有最终值都落在可接受的范围内,以下代码也会出错:
Sub Test()
Dim v1, v2, v3, v4
v1 = 569847501 + 54678 ' OKAY
v2 = 7784687414# + 98565821345# ' OKAY
v3 = 7784687414# + 1132747441 ' OKAY
v4 = 1132747441 + 1788441323 ' FAILS
End Sub
Run Code Online (Sandbox Code Playgroud)
MSDN还指出:
"但是,如果对包含Byte,Integer,Long或Single的Variant执行算术运算,并且结果超出原始数据类型的正常范围,则结果将在Variant中提升为下一个更大的数据类型.Byte被提升为Integer,Integer被提升为Long,Long和Single被提升为Double."
文档指出当算术运算超出原始数据类型的正常范围时,应该提升类型.为什么不v4升职Double?
vba ×1