Oracle数据库中NUMBER(x,y)数据类型详解

2015-07-16 12:08:24 · 作者: · 浏览: 0

建立一个只有一列的表,NUMBER(8,2)表示数字总个数最多为8,小数部分最多2位(推算出整数部分最多8-2=6位)。


小数部分代表着精确程度,NUMBER(8,2)可以保存的小数位最多2位,那么超过2位会怎样呢?


可见,小数部分对小数点后2位以后的部分采用了四舍五入的算法,1.234存为1.23,而1.235存为1.24。


既然整数部分最多6位,小数部分最多2位,那么number(8,2)可以表示的最大数字就是999999.99。我们现在插入这个最大的值。


可见这个数字被正确的存储了。
下面插入一个更大大数字999999.991


可以插入,但是被截断为999999.99,其实原因很简单,小数部分的0.991会四舍五入到0.99,舍入后数值成了999999.99,在范围之内。


再看看999999.995。


插入失败!原因是999999.995小数部分舍入后变成了1000000.00,超出了6位整数范围。


负数的范围与正数范围对称,所以最小值为 -999999.99


NUMBER(8,2)表示的数字范围为[-999999.99,999999.99]。判断一个给定数字能否在此范围之前,先对小数部分进行四舍五入,然后再来比较。判断步骤: