我有一个表,其中包含以下内容:
TRANSACTION RECALCULATED_TRANSACTION CUSTOMERS DIFFERENCE SPLIT
2.01 2.09 2 0.08 0.05
TRANSACTION是客户交易的价值
RECALCULATED_TRANSACTION是经过相当长的计算后的新交易金额(用 VBA 编写)
CUSTOMERS是每笔交易的客户数量
DIFFERENCE是 RECALCULATED_TRANSACTION 和 TRANSACTION SPLIT 之间的差异 TRANSACTION
SPLIT是 DIFFERENCE 除以 CUSTOMERS 和四舍五入
正如您在此示例中看到的那样,我的 Access 数据库为 SPLIT 提供了 0.05 的输出,而它应该是 0.04 (0.08 / 2),我不知道为什么。由于 Access 中没有内置的 ROUNDUP 功能,一位同事为我创建了一个模块(代码如下)
一个可能的原因是,虽然 DIFFERENCE 值显示为 0.08,但当我单击 Access 中的字段时,它会变为 8.00000000000001E-02。这是否意味着存储的实际值大于 0.08,并解释了为什么当它除以 2 并向上取整时,SPLIT 变为 0.05?
综述模块
Function roundup(X As Double) As Double
If X > Int(X * 100) / 100 Then
'turn value into an 100 times then only take the integer value. Add one to increase by 0.01 and
'divide value by 100 to return back to 2 decimal places
roundup = (Int(X * 100) + 1) / 100
Else
roundup = X
End If
'returns the new value back to the calling function
End Function