- 论坛徽章:
- 0
|
DB2中直接使用sum函数,结果相除时会丢掉小数位,实验如下:
create table aa(a1 decimal(10,2),a2 decimal(10,2));
insert into aa values(123.45,234.56);
insert into aa values(100.12,234.56);
commit;
查询结果:
select a1,a2,a1/a2 from aa;
123.45 234.56 0.526304570259208731241
100.12 234.56 0.426841746248294679399
select sum(a1),sum(a2), sum(a1)/sum(a2), sum(a2)/sum(a1) from aa;
223.57 469.12 0 2
也就是说sum函数的结果相除,得出不正确的结果!
同样的方法在Oracle中却不会出现这种错误!此处只能转换成:
select cast(sum(a1) as double)/sum(a2)from aa;
除此之外,DB2中在两个字段相除时还会经常出现精度问题. |
|