From
:
baidu
在Oracle中Number
类型可以用来
存储
0
,
正负定点
或者
浮点数
,可表示的数据范围在
1.0 * 10(-130) —— 9.9…9 * 10(125) {38个9后边带88个
0}
的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。
Number的数据声明如下:
|
|
|
|
|
|
|
|
|
|
|
|
定点数的精度(p)和刻度(s)遵循以下规则:
当一个数的整数部分的长度
> p-s
时
,Oracle就会报错
当一个数的小数部分的长度
> s
时
,Oracle就会舍入。
当
s(scale)
为负数时
,Oracle就对小数点左边的s个数字进行舍入。
当
s > p
时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入.
From
:
http://blog.csdn.net/mr_zhao/archive/2007/06/29/1671605.aspx
(
2
)
.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
SpecifiedAs
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