在 MS Access VBA 中添加两个等于零的变量时出现奇怪的结果
Posted
技术标签:
【中文标题】在 MS Access VBA 中添加两个等于零的变量时出现奇怪的结果【英文标题】:Strange results when adding two variables in MS Access VBA that equal Zero 【发布时间】:2013-02-22 18:30:07 【问题描述】:我的 VBA MSAccess 平台中有一个例程让我感到困惑。 我所做的只是在遍历记录集时汇总一个金额字段。
我已经声明了一个名为 TempAmount 的变量(它在我们循环时保存总数)。 表中的字段名称在名为 rsBilled 的记录集中称为 BilledAmount。
循环开始时,TempAmount 为零。随着循环的进行,我们将 BilledAmount 添加到 TempAmount。
这是代码的模型。
Dim TempAmount as Double
TempAmount = 0
While NOT rsBilled.EOF
TempAmount = TempAmount + rsBilled.Fields("BilledAmount")
rsBilled.MoveNext
Wend
(然后我们将 TempAmount 写入另一个包含 Totals 的表。)
现在一切正常。除非 TempAmount 和 BilledAmount 的金额相反,从而产生零。 换言之,如果 TempAmount 为 15.25 且 BilledAmount = -15.25,则结果应为零。但这不会发生。相反,我得到了一些疯狂的扩展符号值,例如 2.123423523E-10。
同样,只有当结果等于零时才会发生这种情况,因为正值被添加到相反的负值上。
有什么线索吗?
【问题讨论】:
【参考方案1】:您已将TempAmount
声明为double
,因此您处理的是浮点数,而不是定点数。
将TempAmount
声明为currency
。
【讨论】:
当然。如果您想让帐户满意,有时最好在写入货币之前使用格式进行四舍五入。【参考方案2】:Dim TempAmount as Double
TempAmount = 0
While NOT rsBilled.EOF
TempAmount = Round(TempAmount,4) + Round(rsBilled.Fields("BilledAmount"),4)
rsBilled.MoveNext
Wend
【讨论】:
以上是关于在 MS Access VBA 中添加两个等于零的变量时出现奇怪的结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在运行时使用 VBA 将按钮添加到 MS Access 表单并将代码添加到 _Click() 事件
使用 MS Access VBA 在 .xlsx 文件中插入一行...如何避免损坏文件?