首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表字段为4位小数,原始数据仅为2位小数

问表字段为4位小数,原始数据仅为2位小数
EN

Stack Overflow用户
提问于 2019-03-10 00:01:04
回答 2查看 37关注 0票数 0

我使用Round(Paid,2)为Me.Amt赋值。结果应四舍五入为两位小数。但是,它不是两位小数。我使用下面的代码进行测试。Amt字段是Currency字段。小数位数为自动。Me.Amt格式为货币,小数位为auto。

结果应为47340.14。但是,它在Me.Amt和表记录上都是47340.1484。

代码语言:javascript
复制
    Dim lng As Long
    lng = 4734015
    Me.Amt = 0
    Me.Amt = CSng(l / 100)

非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2019-03-10 00:45:00

出现问题是因为CSng将结果转换为精度约为7位十进制数字的Single值。像47340.15这样的值不能用有限数量的二进制小数位来表示。

只需删除CSng即可。

我做了一个测试

代码语言:javascript
复制
Private Sub Command2_Click()
    Dim lng As Long
    lng = 4734015
    Me.Amt = lng / 100
End Sub

得到了47340.15的结果。如果将长整型值除以100,则没有必要将结果四舍五入为2位数,因为它永远不会超过2位数。

但请注意,Access不支持对Currency值进行计算。如果计算CCur(lng) / CCur(100),结果将是Double。您可以使用TypeName(CCur(lng) / CCur(100))测试这一点。与Single相比,Double的精度提高了一倍。

票数 0
EN

Stack Overflow用户

发布于 2019-03-10 01:14:32

我将支付从单一货币更改为货币,结果现在是正确的。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55079182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档