number精度问题

SQL> show numw
numwidth 10

SQL> select 1/3*3 from dual;

     1/3*3
----------
         1

SQL> select trunc(1/3*3,9) from dual;

TRUNC(1/3*3,9)
--------------
    .999999999

SQL> select trunc(1/3*3,10) from dual;

TRUNC(1/3*3,10)
---------------
              1

SQL> select trunc(1/3*3,19) from dual;

     TRUNC(1/3*3,19)
--------------------
.9999999999999999999

SQL> select trunc(1/3*3,20) from dual;

     TRUNC(1/3*3,20)
--------------------
                   1

SQL> select dump(1/3) from dual;

DUMP(1/3)
-----------------------------------------------------------------------------
Typ=2 Len=21: 192,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34

SQL> select dump(1/3*3) from dual;

DUMP(1/3*3)
-------------------------------------------------------------------------------------------------
Typ=2 Len=21: 192,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100

SQL> select dump(1) from dual;

DUMP(1)
------------------
Typ=2 Len=2: 193,2

SQL> set numw 100000
SP2-0267: numwidth option 100000 out of range (2 through 50)

由实验可以看出number 最大能精确到小数点后面50位。

原文地址:https://www.cnblogs.com/hehe520/p/6330611.html