概述
ORACLE NUMBER类型详解,阅读ORACLE NUMBER类型详解,1.NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision -- p scale -- sNUMBER(p, s)范围: 1 = p =38, -84 = s = 127保存数据范围:-...
1>.NUMBER类型细讲:
Oracle number datatype 语法:NUMBER[(precision [, scale])]
简称:precision --> p
scale --> s
NUMBER(p, s)
范围: 1 <= p <=38, -84 <= s <= 127
保存数据范围:-1.0e-130 <= number value < 1.0e+126
保存在机器内部的范围: 1 ~ 22 bytes
有效位:从左边第一个不为0的数算起的位数。
s的情况:
s > 0
先精确到小数点右边s位,并四舍五入。然后检验有效位是否 <= p。
s < 0
先精确到小数点左边s位,并四舍五入。然后检验有效位是否 <= p + |s|。
s = 0
此时NUMBER表示整数。
eg:
Actual Data Specified As Stored As
----------------------------------------------------------------------------------
123.89 NUMBER 123.89
123.89 NUMBER(3) 124
123.89 NUMBER(6,2) 123.89
123.89 NUMBER(6,1) 123.9
123.89 NUMBER(4,2) exceeds precision (有效位为5, 5 > 4)
123.89 NUMBER(6,-2) 100
.01234 NUMBER(4,5) .01234 (有效位为4)
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012 NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
1.2e-4 NUMBER(2,5) 0.00012
1.2e-5 NUMBER(2,5) 0.00001
123.2564 NUMBER 123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error (有效位为5+2 > 6)
1234.9876 NUMBER(6) 1235 (s没有表示s=0)
12345.345 NUMBER(5,-2) 12300
1234567 NUMBER(5,-2) 1234600
12345678 NUMBER(5,-2) Error (有效位为8 > 7)
123456789 NUMBER(5,-4) 123460000
1234567890 NUMBER(5,-4) Error (有效位为10 > 9)
12345.58 NUMBER(*, 1) 12345.6
0.1 NUMBER(4,5) Error (0.10000, 有效位为5 > 4)
0.01234567 NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999
2.说明:
<1>.Number(p, s)
声明一个定点数 p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127
<2>.Number(p)
声明一个整数 相当于Number(p, 0)
<3>.Number
声明一个浮点数 其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数
<4>.
//123.89 NUMBER(4,2) 错误。 因为要求:有效位是4位,小数点是2位。
实际:有效位是5位,小数点是2位。
//123.89 NUMBER(6,-2) 100 。 因为:小数点左边2位四舍五入后是100,然后100总位数是3位<=6+|-2|。
//1234567 NUMBER(5,-2) 1234600。因为:四舍五入后是1234600,然后总位数是7<=5+|-2|。
//12345678 NUMBER(5,-2) Error。 因为:四舍五入后是12345700,然后总位数是8>5+|-2|。
//1234567890 NUMBER(5,-4) Error。 因为:四舍五入后是1234570000,总位数是10>5+|-4|。
//1234.9876 NUMBER(6) 1235。 因为:四舍五入为整数是1234,有效位是4<6。
//12345.12345 NUMBER(6,2) Error。 因为:四舍五入后是12345.12,有效位是7>6。
//.01234 NUMBER(4,5) .01234。 因为:四舍五入后是.01234,有效位为4而不是5,4<=4
因为:从左边第一个不为0的数算起的位数
//0.1 NUMBER(4,5) Error。 因为:四舍五入后是0.10000(只格式化了小数点), 有效位总位数为5 > 4。
//1.2e-4 NUMBER(2,5) 0.00012 因为:四舍五入后是0.00012,有效位是2<=2。
//1.2e-5 NUMBER(2,5) 0.00001 因为:四舍五入后是0.00001(格式化小数点到第5位),有效位为1<2。
最后
以上就是踏实诺言为你收集整理的NUMBER类型详解的全部内容,希望文章能够帮你解决NUMBER类型详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复