1

我的 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。

同样,这仅在结果等于零时发生,因为正值被添加到相反的负值。

有什么线索吗?

4

2 回答 2

3

您已声明TempAmount为 a double,因此您处理的是浮点数,而不是定点数。

TempAmount改为声明currency

于 2013-02-22T18:34:15.447 回答
1
Dim TempAmount as Double 
TempAmount = 0

While NOT rsBilled.EOF 
TempAmount = Round(TempAmount,4) + Round(rsBilled.Fields("BilledAmount"),4)
rsBilled.MoveNext
Wend
于 2013-02-22T18:35:52.027 回答