number型的困惑

[复制链接]
查看11 | 回复3 | 2011-11-1 16:26:59 | 显示全部楼层 |阅读模式
书上说number默认精度是38位,长度是0~22字节,可是我给表里插入40位长的数字,也没有报说精度不对啊,这是为什么?
貌似我概念不清楚,哪位大哥帮我理下.........
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
这40位,后面有多少0,改成最后1位不是0的
col a for 9999999999999999999999999999999999999999.9999999999999999999999999999999999999999
select * from a
看你的有效数字还在吗
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
确实40位精度还在,以前在这看到过帖子。
select to_char(to_number(lpad('9',40,'9'))) from dual;
TO_CHAR(TO_NUMBER(LPAD('9',40,'9')))
----------------------------------------
9999999999999999999999999999999999999999

select to_char(to_number(lpad('9',41,'9'))) from dual;
TO_CHAR(TO_NUMBER(LPAD('9',41,'9')))
----------------------------------------
1.0000000000000000000000000000000000E+41
回复

使用道具 举报

千问 | 2011-11-1 16:26:59 | 显示全部楼层
所以巨困惑,9999999999999999999999999999999999999999.9999999999999999999999999999999999999999存储成了1e40,用9999999999999999999999999999999999999999.9999999999999999999999999999999999999999也能查到,用1e40也能查到,那到底是个什么数?
兔子说number取值范围为:10e-130 – 10e 126(不包括),怎么算出来的啊?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行