oracle中sum求和自动四舍五入了?

[复制链接]
查看11 | 回复7 | 2011-4-14 09:58:09 | 显示全部楼层 |阅读模式
select ACCT_BALANCE from tablea T where T.USER_ID = 2733971;
>
1
999999873884.5999760
select sum(ACCT_BALANCE) from tableaT where T.USER_ID = 2733971;
>
1
999999873884.6
只有一条记录,单独取就是原值,sum 了之后就四舍五入了?还是sum 后就只保留一位小数了?
这是为什么???

回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
col a format 9999999999.99999999999
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
〇〇 发表于 2014-9-15 21:47
col a format 9999999999.99999999999

这好像是个问题,SUM之后默认只保留到3位小数,楼主的后2位恰好是0所以被省略了,用col a format也没什么效果:
SQL> col a format 9999999999.99999999999;
SQL>
SQL> select sum(999999873884.5985)
2from dual
3;

SUM(999999873884.5985)
----------------------
999999873884.599
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
〇〇 发表于 2014-9-15 21:47
col a format 9999999999.99999999999

哦。不对。。试了下。是一共只有16位,整数位少点,小数位就会留下:
SQL> select sum(111113884.5985888)
2from dual
3;

SUM(111113884.5985888)
----------------------
111113884.598589

SQL>
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
ACCT_BALANCE的数据类型?
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
SQL> col a format 9999999999.99999999999
SQL> select 999999873884.5999760 from dual;

999999873884.5999760
--------------------
999999873884.6复制代码直接查也显示四舍五入的结果
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
长度16位?
回复

使用道具 举报

千问 | 2011-4-14 09:58:09 | 显示全部楼层
〇〇 发表于 2014-9-16 09:24
ACCT_BALANCE的数据类型?

number(22,7)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行