小编Hir*_*eka的帖子

VBA:变体数据类型的意外行为

根据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

6
推荐指数
2
解决办法
120
查看次数

标签 统计

vba ×1