我的位置: 主页 > 学习专区 > 数据库技术 > > oracle的number数据类型

oracle的number数据类型

2013-08-06 18:24北大青鸟锦江天府学院
[导读] Number类型是oralce的数值类型,存储的数值的精度可以达到38位。Number是一种变长类型,长度为0-22字节。取值范围为:10^(-130) 10^126(不包括)。以十进制格式进行存储的,它便于存储,但是在
Number类型是oralce的数值类型,存储的数值的精度可以达到38位。Number是一种变长类型,长度为0-22字节。取值范围为:10^(-130) —— 10^126(不包括)。以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。
 
Number(p,s):
P和s都是可选的。
P指精度(precision),即总位数。默认情况下精度为38。精度的取值范围为1~38。
S指小数位(scale),小数点右边的位数。小数点位数的合法值为-84~127。小数位的默认值由精度来决定。如果没有指定精度,小数位默认为最大的取值区间。如果指定了精度,没有指定小数位。小数位默认为0(即没有小数位)。
精度和小数位不会影响数据如何存储,只会影响允许哪些数值及数值如何舍入。
 
存储格式:
数字类型内部存储是一个字节的变长阿拉伯数字数组。
数字类型有以下格式:
< [length]>,sign bit/exponent,digit1,digit2,...,digit20
0           digit1                 21
指数字节 数值 数值 数值
第0个字节:
为符号和指数字节(sign bit/exponent ),由三部分构成:
(1)符号位:是整个字节的最高位(128)
  如果是0,则数字是负数
  如果是1,则数字是正数或者0
(2)偏移量:总是65
(3)指数:
  范围为-65到62
  标示该数字100为基础的科学记数法
 
对于第0个字节的值,则有:正数>128;负数<128;零=128
记ZV=第0个字节的值,指数值为E则有:
若ZV=200,E=200-128-65=7
如果第一个字节大于128,那么数字是正的:
E=ZV- 128 -65=ZV-193
如果第一个字节小于128,那么数字是负的:
E=(255-ZV)-128-65=62-ZV
 
数值字节(Digits):
大部分数字的最高位是digit1
使用100作为基数(每一个数字是0-99之间)
对于正数:
  实际值=存储值-1
对于负数:
  实际值=101-存储值
  标志102位于最后
例:
11.11的存储格式为:
193,12,12
193>128,为正数,指数E=0,11(实际值)=12(存储值)-1
 
-11.11的存储格式为:
62,90,90,102
62<128,为负数,指数E=0,11(实际值)=101-90(存储值)
因为数字是基于100的,因此最大的数字是99.指数从-65到62,因此,oracle的number的范围为:1*100(-65)=1*10^(-130)到99*100(62)+99*100(61)……无限接近1*10^(126)。
 
正数的解读
数字为正数,第一个字节必须大于128(0x80)
第一步:指数= ZV(第0个字节的值)-193
第二步:每一个其他的数字都减1
第三步:从基于100的指数转换到基于10的指数
       每一个结果通过100^(EXP-N)其中
       EXP是第一步中得到的指数
       N是数字的位置的顺序号(最高位的N=0)
第四步:将所有的值相加
例:1234.12的存储:194,13,35,13
求值过程:
194>128,正数,E=1
实际值1234.12=(13-1)*100^1+(35-34)^0+(13-1)^(-1)
 
负数的解读
数字为负数,第一个字节必须小于128(0x80)
第一步:指数=62-ZV(第0个字节的值)
第二步:每一个数字被101减
第三步:将基数从100转换为10
       每一个数字乘以100^(EXP-N)这里
       EXP是第一步中的指数值
       N是数字位置顺序值(最高位为0)
第四部:确认尾巴上的102已经抛弃
第五步:将所有的值相加
如果数字标示超过21字节,则最后的102不被要求,oracle不会使用22字节来标示的。Oracle将自己会考虑所有的字节。
例:-1234.12的存储格式:61,89,67,89,102
求值过程:
61<128,负数,E=62-61=1
实际值-1234.12=-(  (101-89)*100^1+(101-67)*100^0+(101-89)*100^(-1)  )
热点专题
>>
相关文章推荐
>>
www.028bdqn.com/" title="北大青鸟证书" class="tagc1" target="_blank">北大青鸟证书 北大青鸟学历 华为 集体 班好 凤凰山 一峰 红树 林骑行 成功者 云景 清远北大青鸟 网页制作 文天祥 惠州北大青鸟 河源北大青鸟 梁*伟 秦*政 温*典 许*灿 珠海北大青鸟 林*涛 李*军 罗* 陈*标 雷* 王*轩 张*兴 温*华 苏*胜 廖*军 徐*凝 陈*昌