最初由 kennic 发布
[B]请问一字段有10位小数,用round函数显示不出来,请问应该如何将其显示出来呀?也就是oracle如何显示完整小数啊?
SQL> desc numtab
Name
Null?Type
----------------------------------------- -------- ----------------------------
NUMTAB
NOT NULL NUMBER(20,10)
SQL> insert into numtab values (10.123456789123);
1 row created.
SQL> commit;
Commit complete.
SQL> select numtab from numtab;
NUMTAB
----------
10.1234568
SQL> select round(numtab,10) from numtab;
ROUND(NUMTAB,10)
----------------
10.1234568
SQL> select round(numtab,20) from numtab;
ROUND(NUMTAB,20)
----------------
10.1234568 [/B]
应该显示10.1234567891呀,但oracle就显示10.1234568
我也想不通了,看了好多文章,还是觉得不好解释
1>.NUMBER类型细讲:
Oracle number datatype 语法:NUMBER[(precision [, scale])]
简称:precision --> p
scale --> s
NUMBER(p, s)
范围: 10
精确到小数点右边s位,并四舍五入。然后检验有效位是否4)
123.89 NUMBER(6,-2)100
.01234 NUMBER(4,5) .01234 (有效位为4)
.00012 NUMBER(4,5) .00012
.000127 NUMBER(4,5) .00013
.0000012NUMBER(2,7) .0000012
.00000123 NUMBER(2,7) .0000012
1.2e-4 NUMBER(2,5) 0.00012
1.2e-5 NUMBER(2,5) 0.00001
123.2564NUMBER123.2564
1234.9876 NUMBER(6,2) 1234.99
12345.12345 NUMBER(6,2) Error (有效位为5+2 > 6)
1234.9876 NUMBER(6) 1235 (s没有表示s=0)
12345.345 NUMBER(5,-2)12300
1234567 NUMBER(5,-2)1234600
12345678NUMBER(5,-2)Error (有效位为8 > 7)
123456789 NUMBER(5,-4)123460000
1234567890NUMBER(5,-4)Error (有效位为10 > 9)
12345.58NUMBER(*, 1)12345.6
0.1 NUMBER(4,5) Error (0.10000, 有效位为5 > 4)
0.01234567NUMBER(4,5) 0.01235
0.09999 NUMBER(4,5) 0.09999
|