VBA中Long类型相除存为整数:如何让Rate保留实际计算值?
解决VBA中Rate变量存储整数近似值的问题
问题根源在于Rate被声明为Long(长整型),VBA会自动将除法运算得到的浮点值(0.9)取整为整数,所以最终存储的是1而非实际计算值。
要让Rate存储精确的浮点结果,有两种核心修改方式:
1. 修改变量声明为浮点类型
将Rate的类型从Long改为浮点型(推荐用Double,精度更高;也可以用Single,占用内存更少),这样变量本身就能直接存储小数:
修改后的完整代码:
Dim Start As Long Dim Final As Long Dim Rate As Double ' 替换Long为Double Start = 10 Final = 9 Rate = Final / Start MsgBox("Rate Variable = " + CStr(Rate) + "; Actual Calculation = " + CStr(Final / Start))
运行后MsgBox会显示:
Rate Variable = 0.9; Actual Calculation = 0.9
2. 赋值时强制转换为浮点型(不推荐,仅作补充)
如果暂时不想修改变量声明(不建议,因为Long本质还是只能存整数,强制转换后仍会丢失精度),可以在赋值时用CDbl()函数将运算结果转为双精度浮点后再赋值:
Rate = CDbl(Final / Start)
但这种方式只是临时转换,Rate作为Long类型最终还是会取整,所以优先推荐第一种修改变量类型的方案。
内容的提问来源于stack exchange,提问作者thnkwthprtls
相关产品推荐
相关产品推荐

