- Number简单介绍
在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)表示小数点右边,即小数位位数 |
Number(p) | 声明一个整数 | 相当于Number(p, 0),即当s=0时,Number声明的是一个整数 |
Number | 声明一个浮点数 | 用于表示一个浮点数,p和s都是oracle所能支持的最大值,即p=38,s=127(p的范围是1~38,s的范围是-84~127)。实际上对于这种p<s的情况只能用于存储一个大于0小于1的小数,且小数点后的0的个数至少是s-p个。 |
有效数位 :从左边第一个不为 0 的数算起,到末位数字为止的所有数字,小数点和负号不计入有效位数。
例子:
Number(8,1) 存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全; 像这种p>s的情况,小数点前至少能插入p-s个数字,但是小数点后的数字可以任意长度(会自动舍入)。Number(8) 存储总长度为8的整数
- 定点数的精度(p)和刻度(s)遵循的规则
例:12345.12345 NUMBER(6,2) Error
12345.58 NUMBER(*, 1) 12345.6
当s(scale)为负数时,Oracle就对小数点左边的s个数字进行舍入。
例:12345.345 NUMBER(5,-2) 12300
当s > p 时, p表示小数点后第s位向左最多可以有多少位数字,如果大于p则Oracle报错,小数点后s位向右的数字被舍入