ITPUB??ì3
ITPUB论坛 » Oracle专题深入讨论 » 偷偷问一个自己想不明白的问题(关于number类型的存储机制)

标题: 偷偷问一个自己想不明白的问题(关于number类型的存储机制)
离线 DEATHZQ
夹缝中的人生



精华贴数 0
个人空间 0
技术积分 111 (15052)
社区积分 0 (371810)
注册日期 2005-4-26
论坛徽章:0
      
      

发表于 2008-5-27 12:39 
两种类型的区别的确很惊人,谢谢晶晶小妹的示例


__________________
摩非定律:凡事只要有可能出错,那就一定会出错。

偶要将一切可能扼杀在萌芽之中
只看该作者    顶部
离线 超级野人
老会员



精华贴数 2
个人空间 0
技术积分 2000 (781)
社区积分 13 (9035)
注册日期 2002-11-20
论坛徽章:1
会员2006贡献徽章     
      

发表于 2008-7-13 11:18 
这段时间自己查了一些资料,得出一个解释:oracle之所以不按照2进制来存储,是因为对于整数来说,使用2进制来存储一点问题都没有,但是对于小书来说,就存在问题了,比如说0.6,如果使用2进制来存储的话,是无穷无尽循环的数,在有限的空间里是无法准确地表示这个数的。因此说,为了准确地表示数字,必须要按照10进制的方式来存储!


__________________
我是野人我怕谁,我的qq:574674565
只看该作者    顶部
离线 Yong Huang
版主



精华贴数 2
个人空间 0
技术积分 3994 (347)
社区积分 120 (3013)
注册日期 2001-10-9
论坛徽章:6
现任管理团队成员ITPUB元老管理团队2006纪念徽章会员2006贡献徽章授权会员2008年新春纪念徽章
      

发表于 2008-7-13 21:47 


QUOTE:
原帖由 超级野人 于 2008-7-12 21:18 发表
这段时间自己查了一些资料,得出一个解释:oracle之所以不按照2进制来存储,是因为对于整数来说,使用2进制来存储一点问题都没有,但是对于小书来说,就存在问题了,比如说0.6,如果使用2进制来存储的话,是无穷无尽循环的数,在有限的空间里是无法准确地表示这个数的。因此说,为了准确地表示数字,必须要按照10进制的方式来存储!

Can you show us the reference to support this? Thanks.

Yong Huang


只看该作者    顶部
离线 超级野人
老会员



精华贴数 2
个人空间 0
技术积分 2000 (781)
社区积分 13 (9035)
注册日期 2002-11-20
论坛徽章:1
会员2006贡献徽章     
      

发表于 2008-7-14 20:16 
0.6的2进制表示为0.10011001100110011001100110011。。。。。。。。。。。。。。。。无限循环,无穷无尽!!!!!!


__________________
我是野人我怕谁,我的qq:574674565
只看该作者    顶部
离线 yulihua49
初级会员



精华贴数 0
个人空间 0
技术积分 38 (33757)
社区积分 0 (1264159)
注册日期 2007-2-1
论坛徽章:0
      
      

发表于 2008-7-31 11:57 


QUOTE:
原帖由 Yong Huang 于 2008-5-10 01:29 发表
晶晶小妹, do you have performance comparison between number and binary_float, binary_double? Thanks.

Yong Huang

ORACLE内部是压缩十进制类型,做财会方面精度高。如果在内存完全用十进制,速度的确非常慢。
如果到内存对应成整形、浮点,速度就不慢了,(四舍五入)精度也没了。
对应整形还存在一个问题,数值范围可能溢出。


只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问