Oracle中NUMBER类型问题
2014-01-08 14:47
489 查看
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
在Oracle中Number类型可以用来存储0,正负定点或者浮点数,可表示的数据范围在
1.0 * 10(-130) —— 9.9...9 * 10(125) {38个9后边带88个0}
的数字,当Oracle中的数学表达式的值>=1.0*10(126)时,Oracle就会报错。
Number的数据声明如下:
表示 | 作用 | 说明 |
Number(p,s) | 声明一个定点数 | p(precision)为精度,s(scale)表示小数点右边的数字个数,精度最大值为38,scale的取值范围为-84到127 |
Number(p) | 声明一个整数 | 相当于Number(p, 0) |
Number | 声明一个浮点数 | 其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。 |
当一个数的整数部分的长度
> 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
相关文章推荐
- ORACLE 中NUMBER类型默认的精度和Scale问题
- Oracle中Number类型字段使用.netTiers和CodeSmith问题的解决方案
- 解决从pl/sql查看oracle的number(19)类型数据为科学计数法的有关问题
- Oracle中Number类型字段使用.netTiers和CodeSmith问题的解决方案
- Oracle 关于number类型转换to_char类型 存在的问题
- 关于oracle number类型超过16位的显示问题
- Oracle中NUMBER类型问题
- Oracle中NUMBER类型问题
- 转载《Oracle中NUMBER类型问题 》
- ORACLE_NUMBER类型Scale为0引发的问题
- 查看oracle的number(20)类型数据为科学计数法的问题
- to_number与oracle 里面number类型易出错的问题
- ORACLE_NUMBER类型Scale为0引发的问题
- Oracle Number类型超长小数位为0问题
- oracle中number数据类型的存储以及最大值问题
- 解决从pl/sql查看oracle的number(19)类型数据为科学计数法的问题
- 在Oracle中NUMBER数据类型的定义问题
- Oracle数字类型number自增的实现代码
- oracle中将number类型毫秒值转为时间类型
- Oracle中NUMBER类型如果不指定长度和小数点精度默认是多长