【发布时间】:2017-01-30 02:45:53
【问题描述】:
我使用的是 Excel 2013。在以下代码片段中,VBA 为 damage 计算 40:
Dim attack As Variant, defense As Variant, damage As Long
attack = 152 * 0.784637
defense = 133 * 0.784637
damage = Int(0.5 * attack / defense * 70)
如果数据类型更改为Double,VBA 为damage 计算39:
Dim attack As Double, defense As Double, damage As Long
attack = 152 * 0.784637
defense = 133 * 0.784637
damage = Int(0.5 * attack / defense * 70)
在调试器中,Variant/Double 和 Double 值显示相同。但是,Variant/Double 似乎更精确。
谁能解释这种行为?
【问题讨论】:
-
改变
0.5和70的顺序,你会得到39:Int(70 * attack / defense * 0.5)。
标签: vba double precision variant