Oracle数据库中NUMBER(x,y)数据类型详解
2015-05-21 18:17
375 查看
试验准备
分析并实验
1 小数部分的处理
2 可保存的最大值
3可以保存的最小值
总结
Oracle的NUMBER数据类型表示十进制的数字,分别从整数位个数和小数位个数进行限制。我们以NUMBER(8,2)为例进行分析。
可见,小数部分对小数点后2位以后的部分采用了四舍五入的算法,1.234存为1.23,而1.235存为1.24。
可见这个数字被正确的存储了。
下面插入一个更大大数字999999.991。
可以插入,但是被截断为999999.99,其实原因很简单,小数部分的0.991会四舍五入到0.99,舍入后数值成了999999.99,在范围之内。
再看看999999.995。
插入失败!原因是999999.995小数部分舍入后变成了1000000.00,超出了6位整数范围。
(1)对第3位小数进行四舍五入,得到带2位小数的数字;
(2)判断此数字是否在[-999999.99,999999.99]范围内。
分析并实验
1 小数部分的处理
2 可保存的最大值
3可以保存的最小值
总结
Oracle的NUMBER数据类型表示十进制的数字,分别从整数位个数和小数位个数进行限制。我们以NUMBER(8,2)为例进行分析。
1 试验准备
建立一个只有一列的表,NUMBER(8,2)表示数字总个数最多为8,小数部分最多2位(推算出整数部分最多8-2=6位)。create table t1 (c1 number(8,2));
2 分析并实验
2.1 小数部分的处理
小数部分代表着精确程度,NUMBER(8,2)可以保存的小数位最多2位,那么超过2位会怎样呢?SQL> insert into t1 values(1.234); 1 row created. SQL> select * from t1; C1 ---------- 1.23 SQL> delete from t1; 1 rows deleted. SQL> insert into t1 values(1.235); 1 row created. SQL> select * from t1; C1 ---------- 1.24
可见,小数部分对小数点后2位以后的部分采用了四舍五入的算法,1.234存为1.23,而1.235存为1.24。
2.2 可保存的最大值
既然整数部分最多6位,小数部分最多2位,那么number(8,2)可以表示的最大数字就是999999.99。我们现在插入这个最大的值。SQL> insert into t1 values(999999.99); 1 row created. SQL> select * from t1; C1 ---------- 999999.99
可见这个数字被正确的存储了。
下面插入一个更大大数字999999.991。
SQL> insert into t1 values(999999.991); 1 row created. SQL> select * from t1; C1 ---------- 999999.99
可以插入,但是被截断为999999.99,其实原因很简单,小数部分的0.991会四舍五入到0.99,舍入后数值成了999999.99,在范围之内。
再看看999999.995。
SQL> insert into t1 values(999999.995); insert into t1 values(999999.995) * ERROR at line 1: ORA-01438: value larger than specified precision allowed for this column
插入失败!原因是999999.995小数部分舍入后变成了1000000.00,超出了6位整数范围。
2.3可以保存的最小值
负数的范围与正数范围对称,所以最小值为 -999999.99。3 总结
NUMBER(8,2)表示的数字范围为[-999999.99,999999.99]。判断一个给定数字能否在此范围之前,先对小数部分进行四舍五入,然后再来比较。判断步骤:(1)对第3位小数进行四舍五入,得到带2位小数的数字;
(2)判断此数字是否在[-999999.99,999999.99]范围内。
相关文章推荐
- oracle数据库--数据类型number(p,s)的使用详解
- oracle运用(四) oracle数据库NUMBER类型详解
- 【转】oracle数据库NUMBER数据类型
- ORACLE数据库number类型使用hibernate反向生成JavaBean的数据类型
- ORACLE数据库number类型使用hibernate反向生成JavaBean的数据类型
- Oracle中int和number数据类型的详解
- oracle数据库中的number数据,在映射成javaBean时,数据类型为BigDecimal
- mysql数据类型详解
- oracle 数据类型详解---日期型
- oracle 数据类型详解---日期型
- Visual C++常用数据类型转换详解
- VC++常用数据类型及其操作详解
- javascript,对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制
- SQL SERVER 数据类型详解
- sql server数据类型详解
- js类型转换与引用类型详解(Boolean_Number_String)
- java基本数据类型与封装类型详解(int和Integer区别)
- js数据类型 ,字符串,对象类型详解
- VC++常用数据类型及其操作详解
- iOS经典讲解之Swift数据类型详解