oracle中number类型是什么类型
3个回答
2016-10-28 · 知道合伙人互联网行家
关注
展开全部
number类型就是包括了所有的数字类型。可以是integer也可以是numeric
Oracle数据类型之number
oracle的number类型是oracle的内置类型之一,是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型,在10g以后,才出现了两种新的数值类型,即推出本地浮点数据类型(Native Floating-Point Data Types): BINARY_FLOAT(单精度32位)和BINARY_DOUBLE(双精度64位). 这些新数据类型都是基于IEEE二进制浮点运算标准,ANSI/IEEE Std 754-1985 [IEEE 754],使用这些类型时要加上文字f(BINARY_FLOAT)或者d(BINARY_DOUBLE),比如2.07f、3.000094d。
number数据类型
number类型的语法很简单:number(p,s):
p:精度位,precision,是总有效数据位数,取值范围是38,默认是38,可以用字符*表示38。
s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。
p:is the precision,or the total number of digits. Oracle guarantees the portability of numbers with precision ranging from 1 to 38.
s:is the scale, or the number of digits to the right of the decimal point. The scale can range from -84 to 127.
number类型的p和s,与其底层存储完全没有关系,根本不会影响数据在磁盘上如何存储,它只会影响允许哪些值以及数值如何舍入,你可以认为其是对数据的“编辑”。简单的说,精度位p表示数值最多能有多少个有效数字,而小数位s表示最多能有多少位小数。换句话说,p表示一共有多少位有效数字(即小数点左边最多有p-s位有效数字),s表示小数点右边有s位有效数字。如number(5,2)类型的数据,就表示小数点左边最多有3位有效数字,右边最多有2位有效数字,加起来就是最多有5位有效数字,超过这个范围的数字就不能正确的存储下来,注意这里说的是不能正确存储,但并不是不能存储。
最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p位必须是0,保留s位小数。
p>0,对s分2种情况:
1. s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否p,小数点右边至少有s-p个0填充。
2. s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
Oracle数据类型之number
oracle的number类型是oracle的内置类型之一,是oracle的最基础数值数据类型。在9iR2及其以前的版本中只支持一种适合存储数值数据的固有数据类型,在10g以后,才出现了两种新的数值类型,即推出本地浮点数据类型(Native Floating-Point Data Types): BINARY_FLOAT(单精度32位)和BINARY_DOUBLE(双精度64位). 这些新数据类型都是基于IEEE二进制浮点运算标准,ANSI/IEEE Std 754-1985 [IEEE 754],使用这些类型时要加上文字f(BINARY_FLOAT)或者d(BINARY_DOUBLE),比如2.07f、3.000094d。
number数据类型
number类型的语法很简单:number(p,s):
p:精度位,precision,是总有效数据位数,取值范围是38,默认是38,可以用字符*表示38。
s:小数位,scale,是小数点右边的位数,取值范围是-84~127,默认值取决于p,如果没有指定p,那么s是最大范围,如果指定了p,那么s=0。
p:is the precision,or the total number of digits. Oracle guarantees the portability of numbers with precision ranging from 1 to 38.
s:is the scale, or the number of digits to the right of the decimal point. The scale can range from -84 to 127.
number类型的p和s,与其底层存储完全没有关系,根本不会影响数据在磁盘上如何存储,它只会影响允许哪些值以及数值如何舍入,你可以认为其是对数据的“编辑”。简单的说,精度位p表示数值最多能有多少个有效数字,而小数位s表示最多能有多少位小数。换句话说,p表示一共有多少位有效数字(即小数点左边最多有p-s位有效数字),s表示小数点右边有s位有效数字。如number(5,2)类型的数据,就表示小数点左边最多有3位有效数字,右边最多有2位有效数字,加起来就是最多有5位有效数字,超过这个范围的数字就不能正确的存储下来,注意这里说的是不能正确存储,但并不是不能存储。
最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p位必须是0,保留s位小数。
p>0,对s分2种情况:
1. s>0
精确到小数点右边s位,并四舍五入。然后检验有效数位是否p,小数点右边至少有s-p个0填充。
2. s<0
精确到小数点左边s位,并四舍五入。然后检验有效数位是否<=p+|s|
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-10-27 · 知道合伙人软件行家
关注
展开全部
oracle中的number类型是数值型,包括整数和小数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询