oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。
1> .NUMBER类型细讲:Oracle number datatype 语法:NUMBER[(precision [, scale])]简称:precision --> p scale --> sNUMBER(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.89123.89 NUMBER(3) 124123.89 NUMBER(6,2) 123.89123.89 NUMBER(6,1) 123.9123.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) .00000121.2e-4 NUMBER(2,5) 0.000121.2e-5 NUMBER(2,5) 0.00001123.2564 NUMBER 123.25641234.9876 NUMBER(6,2) 1234.9912345.12345 NUMBER(6,2) Error (有效位为5+2 > 6)1234.9876 NUMBER(6) 1235 (s没有表示s=0)12345.345 NUMBER(5,-2) 123001234567 NUMBER(5,-2) 123460012345678 NUMBER(5,-2) Error (有效位为8 > 7)123456789 NUMBER(5,-4) 1234600001234567890 NUMBER(5,-4) Error (有效位为10 > 9)12345.58 NUMBER(*, 1) 12345.60.1 NUMBER(4,5) Error (0.10000, 有效位为5 > 4)0.01234567 NUMBER(4,5) 0.012350.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到127Number(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位向右的数字被舍入