Office中国论坛/Access中国论坛

标题: 汇总的问题,计算不准确 [打印本页]

作者: wuchju    时间: 2016-9-12 11:33
标题: 汇总的问题,计算不准确
本帖最后由 wuchju 于 2016-9-12 11:38 编辑

见下图:


汇总金额应该是20899.36,用sum()或dsum()函数都是20899.35这个结果。
数量是小数类型,单价是货币类型,总价是计算后货币类型。有人能解惑吗。。


作者: 风中漫步    时间: 2016-9-12 13:51
应该是总价没有4舍5入
作者: roych    时间: 2016-9-12 17:01
我很怀疑总价那里是手动算出来的。。。。
第3、4行的尾数对不上。根本不是四舍五入可以解释的问题。
一般来说,数据虽然有浮动,但至少尾数应该基本不会相差太大的。
作者: koutx    时间: 2016-9-12 21:59
总价中数据只是设定显示两位小数,其实后面肯定还有多位,可点一下看,如果是,则每一行总价显示的都是第三位四舍五入的表象结果,而汇总并不是按显示的总价来的,所以看似尾数对不上。
作者: wuchju    时间: 2016-9-13 14:54
本帖最后由 wuchju 于 2016-9-13 14:59 编辑

总价是计算出来的,这个没问题,保留2 位小数。
[attach]59931[/attach]
楼上说的对,显示的是表象结果,汇总时按的是小数点后三位一起算的
[attach]59936[/attach][attach]59937[/attach]
小数保留3位就能看到
[attach]59935[/attach]
但我已经设置保留2位小数为什么还要显示表象结果!!!!,我只要两位小数,这样不是坑人吗。


作者: koutx    时间: 2016-9-13 21:10
这才是最公平、最准确的。设想一下如果以前用计算器按,不就是数量X单价再按等号,按储存.......如此一行一行累加,最后提取出结果再四舍五入吗?
作者: wuchju    时间: 2016-9-14 10:19
试想发票上出现这种情况,上面一行一行的数据,下面汇总。汇总金额和上面的金额不等,这发票还能用吗。。。
作者: xinrenq    时间: 2016-9-14 12:24
wuchju 发表于 2016-9-14 10:19
试想发票上出现这种情况,上面一行一行的数据,下面汇总。汇总金额和上面的金额不等,这发票还能用吗。。。

这种情况,是因为明细记录没有进行四舍五入,导至累计上的差异
解决的方式为,你首先把明细记录进行四舍五入,这样就不会产生如下问题了

对于这情况呢,如用ACCESS的话,你可以说解决99%的问题,还有个问题是出在你用什么方式四舍五入的问题
如果用Round函数,在access中会有个浮点计算的Bug,比如26.145,如果你用了round(26.145,2)保留 二位时,其实数据返回是26.14,而不是我们想要的26.15
所以呢,ACCESS在做四舍五入时,一般我们会使用Format的方式进行处理(包括自定义函数)

作者: wuchju    时间: 2016-9-14 16:09
明细上要怎样设置才能保证四舍五入呢,光靠字段属性里的保留2位小数是不能实现的。
看到一个变通的方法:
【Access函数】VBA中ROUND函数浅析
http://www.accessoft.com/article-show.asp?id=8087
round([总价]+0.0001,2),这个总算能解决问题,但总是怪怪的。
在EXCEL中有一个将精度设为所显示的精度这个选项来解决问题。ACCESS目前没有找到类似的方法。。。





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3