1 |
number(<p>,<s>) |
精度p取值范围1~38
有效位s取值范围-84~127
最高整数位数=p-s
s正数,小数点右边指定位置开始四舍五入
s负数,小数点左边指定位置开始四舍五入
s是0或者未指定,四舍五入到最近整数
当p小于s时候,表示数字是绝对值小于1的数字,且从小数点右边开始的前s-p 位必须是0,保留s位小数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
Connected to Oracle9i Enterprise Edition Release 9.0.1.1.1 Connected as aspire SQL> SQL> SET linesize 1000; SQL> CREATE TABLE hjm_num_test 2 (a NUMBER, 3 b NUMBER(5,2), 4 c NUMBER(5,-2), 5 d NUMBER(5,0), 6 e NUMBER(5), 7 f NUMBER(2,5)); Table created SQL> INSERT INTO hjm_num_test 2 (a,b,c,d,e,f) VALUES(123.3333,123.3333,123.3333,123.3333,123.3333,-0.0003); 1 row inserted SQL> INSERT INTO hjm_num_test 2 (a,b,c,d,e,f) VALUES(197.9333,197.9333,197.9333,197.9333,197.9333,0.00012567); 1 row inserted SQL> COMMIT; Commit complete SQL> SELECT * FROM hjm_num_test; A B C D E F 1 123.3333 123.33 100 123 123 -0.00030 2 197.9333 197.93 200 198 198 0.00013 (在pl/sql dev sql窗口显示) |
似乎结果很正确,可是现在出来一个问题,当我不在pl/sql dev窗口运行,我在isqlplus中运行,结果就有点不一样了,注意,第1行的F列:
1 2 3 4 5 |
A B C D E F 123.3333 123.33 100 123 123 -.0003 197.9333 197.93 200 198 198 .00013 (在isqlplus中显示) |
它舍去了末尾的0!在sqlplus下测试也是同样的效果。
不过本人的意向应该是还是保留那个0的,因为number(2,5)它毕竟指定了有效位是5位