number数据类型
number类型是许多数据库中的内置类型之一,number类型是数值型,包括整数和小数。
number(p,s):
Number的数据声明
表示作用说明:
Number(p , s) :声明一个定点数.
p(precision)为精度,在ORACLE中精度的范围是(1,38),默认是38.Precision表示有效位数,有效数位:从左边第一个不为0的数算起,小数点和负号不计入有效位数;
s(scale)表示小数点右边的数字个数。 如果scale大于零,表示数字精确到小数点右边的位数;scale默认设置为0;如果scale小于零,Oracle将把该数字取舍到小数点左边的指定位数。scale表示精确到多少位,指精确到小数点左边或右边多少位(±决定)。
s的情况:
s > 0 :精确到小数点右边s位,并四舍五入。然后检查有效位是否 <= p.
s > 0 :精确到小数点左边s位,并四舍五入。然后检查有效位是否 <= p+|s|.
s = 0:此时number表示整数。
例如:
| 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 |
| 123.2564 | NUMBER |123.2564 |
| 12345.58 | NUMBER(*, 1) | 12345.6|
| .000127 | NUMBER(4,5) | .00013 |
| .0000012 |NUMBER(2,7) | .0000012 |
| 12345.12345 | NUMBER(6,2) | Error (有效位为5+2 >6)|
| 1234.9876 | NUMBER(6) | 1235 (s没有表示s=0)|
| 12345678 | NUMBER(5,-2) | Error (有效位为8 > 7) |
| 1234567890 | NUMBER(5,-4) | Error (有效位为10 > 9)|
| 0.1 | NUMBER(4,5) | Error (0.10000, 有效位为5 >4) |