为什么选择SELECT 123456.123456789123456 FROM Dual; 返回123456.123457?

vld*_*pos 3 oracle

为何SELECT 123456.123456789123456 FROM Dual;回归123456.123457

如何提高这种精度?

我问这是因为我总结了定义的成本值NUMBER(38,20),我可以注意到错误已经累积,但由于这些数字代表了金钱,因此四舍五入是不可接受的.

不仅是我使用的工具对数字显示进行舍入,而且数字本身是四舍五入的,因为所做的报告也包含累积的错误.

Ton*_*ews 6

嗯,事实并非如此.但正如您所说,显示结果的工具(例如SQL Plus)可能会将其四舍五入以进行显示:

SQL> SELECT 123456.123456789123456 n from dual;

         N
----------
123456.123

SQL> column n format 9999999999.99999999999999999999999999999
SQL> SELECT 123456.123456789123456 n from dual;

                                        N
-----------------------------------------
     123456.12345678912345600000000000000
Run Code Online (Sandbox Code Playgroud)

在我指定格式掩码之前,SQL Plus四舍五入到小数点后3位.

至于你的报告显然是对它总和的数据进行舍入,我们可能需要看一个SQL和输入/输出数据的例子.