LongLong溢出问题:Access VBA 秒转毫秒计算报错排查
问题根源
VBA执行算术运算时,会先按照参与运算的字面量默认类型做中间计算,不会提前匹配最终赋值变量的类型。你代码里的474、86400、1000默认均为32位Long类型,第一步计算474 * 86400时结果已经超过32位Long的最大取值(2147483647),还未到赋值给LongLong变量的步骤就已经触发溢出报错,和系统是否为64位、最终结果是否超出LongLong边界无关。
解决方案
有两种常用修复方式,任选其一即可:
- 给任意一个参与运算的字面量添加LongLong类型声明符
^,触发全链路LongLong精度运算:
Public Sub this() Dim this As LongLong this = 474^ * 86400 * 1000 End Sub
- 用
CLngLng()函数转换任意一个参与运算的操作数为LongLong类型:
Public Sub this() Dim this As LongLong this = CLngLng(474) * 86400 * 1000 End Sub
内容的提问来源于stack exchange,提问作者Doug Coats
相关产品推荐
相关产品推荐

