ms-access - 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
解决方案
推荐阅读
- sql-server - 在 Ubuntu 16.04 上安装 MSSQL
- python - 如何在python中访问包含浮点变量的数组
- java - 如何仅将 Java Servlet 映射到没有任何扩展名的路径?
- android - 在 shouldOverrideUrlLoading 中未检测到带有 AngularJS 应用程序路由更改的 Android WebView
- html - 页面没有打开正确的大小
- angularjs - Angular 两种方式 DataBinding ,从 Ajax 调用更新模型
- java - 无法通过来自 java 和 postman 的多部分表单数据上传文件
- android - 从 FCM 启动活动
- c++ - 如何抑制 IWYU 系统标头错误?
- ios - 如何在 Circle Swift 中添加值