NUMBER
[ (
p
[,
s
]) ]
p(精度): 1-38
s(小数位数): -84-127
有效位数:从左边第一个不为0的数算起,到末尾数字为止的所有数字,小数点和负号不计。
一、
不指定s和p
用于表示浮点数,其精度和小数位数都是oracle所能支持的最大值
二、
s=0 即:number(p)
表示整数,有效位数=p
三、
s>0 又分为两种情况:s<p和s>p
1、s<p 小数位数小于精度
有效位数=p;
小数点前有p-s位;
小数点后可以任意多,只保留s位
如:number(5,3) 小数点前最多2位,小数点后可以任意,但只会保留三位,输入12.1234,保存为 12.123;输入123.123,报错,输入1.1,保存为1.100
2、s>p 小数位数大于精度,小数点右边补s-p个0
只能存放大于0小于1的小数;
小数点后紧接着的0的数目为s-p个,否则无法插入;
p用来指定小数点后的最大有效数字位数,当然不包括小数点后紧接着的0的个数;
s是用来限制小数点后的数字位数,包含小数点后紧接着的0;
如:number(3,5) 输入0.001,保存为0.00100
四、
s<0
精确到小数点左边s位,并四舍五入,然后检验有效位数是否<=p+|s|
如:number(5,-3),插入1234.1234,保存结果为1000。
number(3,-5),插入12345.123,保存结果为0;插入123456,保存为100000。
====================================Integer===================================
integer是number的子类,相当于number(38,0),用来存储整数