Oracle Number类型

NUMBER,是以十进制格式进行存储的,它便于存储,但是在计算上,系统会自动的将它转换成为二进制进行运算的。它的定义方式是NUMBER(P,S),P是精度,最大38位,S是刻度范围,可在-84127间取值。P、S可以在定义时省略,例如:NUMBER(5)、NUMBER等;

☆Number补充 在Oracle Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在 1.0 * 10(-130) —— 9.99 * 10(125) {38个9后边带88个0} 的Oracle数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。

Number的数据声明如下:

1)Number(p, s) 声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的Oracle数字个数,精度最大值为38,scale的取值范围为-84到127

2)Number(p) 声明一个整数 相当于Number(p, 0)

3)Number 声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

定点数的精度(p)和刻度(s)遵循以下规则:

当s>0时(s表示小数点右边的数字的个数):

当一个数的整数部分的长度 > p-s 时,Oracle就会报错

当一个数的小数部分的长度 > s 时,Oracle就会舍入。

当s<0时(s表示小数点左边的数字的个数):

Oracle就对小数点左边的s个数字进行舍入。

当s > p 时, p表示小数点后第s位向左最多可以有多少位Oracle数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入例如:

Value-->Datatype-->Stored Value

123.2564-->NUMBER-->123.2564(不限制)

1234.9876-->NUMBER(6,2)-->1234.99(精确到小数点后两位)

12345.12345-->NUMBER(6,2)-->Error(小数点左边的有效数字长度5+小数点右边的有效Oracle数字长度2>规定精度6)

1234.9876-->NUMBER(6)-->1235 (等价于NUMBER(6,0))

12345.345-->NUMBER(5,-2)-->12300 (小数点左边两位做四舍五入)

12345678-->NUMBER(5,-2)-->Error (8-2>5)

123456789-->NUMBER(5,-4)-->123460000

1234567890-->NUMBER(5,-4)-->Error

12345.58-->NUMBER(*, 1)-->12345.6

0.1-->NUMBER(4,5)-->Error

0.01234567-->NUMBER(4,5)-->0.01235

0.09999-->NUMBER(4,5)-->0.09999

0.099996-->NUMBER(4,5)-->Error


总结:

在 p < s 这种情况下
1. 只能用来存放大于 0 小于 1 的小数 。 
2. 小数点后紧接着的 0 的数目至少有 s-p 个 ,不然无法正常插入。 
3. p 用来指定小数点之后的最大有效数字位数。当然不包括小数点后紧接着的 0 的个数。 
4. s 是用来限制小数点后的数字位数【当然也就包括小数点后紧接的 0 】。 

在 p > s 这种情况下
小数点前最多能插入: p - s 个数字,但是小数点后的数字可以任意长度


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值