Fer*_*ndo 5 sql rounding-error sum divide
我的产品价格为4欧元,我需要将这笔钱分配给3个部门。在第二列上,我需要获取此产品的行数并除以部门数。
我的查询:
select
department, totalvalue,
(totalvalue / (select count(*) from departments d2 where d2.department = p.product))
dividedvalue
from products p, departments d
where d.department = p.department
Department Total Value Divided Value
---------- ----------- -------------
A 4 1.3333333
B 4 1.3333333
C 4 1.3333333
Run Code Online (Sandbox Code Playgroud)
但是,当我对这些值求和时,我得到3,999999。当然,在数百行中,我会有很大的不同...有没有机会定义2个十进制数字并舍入最后一个值?(我的结果是1.33 1.33 1.34)我的意思是,有什么方法可以调整最后一行?
如果将最终数字四舍五入到小数点后两位,那么在精确到小数点后六位的情况下,您需要大约 5,000 笔交易才能注意到 1 美分的差异。将小数位数增加到可接受的水平将消除大多数问题,即使用 9 位小数,您需要大约 5,000,000 笔交易才能注意到一分钱的差异。
归档时间: |
|
查看次数: |
2312 次 |
最近记录: |