Oracle中NUMBER类型问题

来源:互联网 发布:mac翻墙的客户端 编辑:程序博客网 时间:2024/05/16 10:07

Frombaidu

在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)表示小数点右边的数字个数,精度最大值为38scale的取值范围为-84127

Number(p)

声明一个整数

相当于Number(p, 0)

Number

声明一个浮点数

其精度为38,要注意的是scale的值没有应用,也就是说scale的指不能简单的理解为0,或者其他的数。

 

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

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

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

s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。

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

 

Fromhttp://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

0 0
原创粉丝点击