首页 > 解决方案 > MS Access 指数、除法和舍入

问题描述

我有一个表,其中包含以下内容:

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

标签: ms-accessexponentialroundup

解决方案


推荐阅读