为什么Oracle汇总了少于38位有效数字的数字?

我们有Oracle Server 10.2.

为了测试这个,我有一个非常简单的表.

CREATE TABLE MYSCHEMA.TESTNUMBER
(
  TESTNUMBER  NUMBER
)

当我尝试插入0.98692326671601283时,数字会被四舍五入.

INSERT INTO MYSCHEMA.TESTNUMBER (TESTNUMBER) 
VALUES (0.98692326671601283);

选择返回:

select * from TESTNUMBER

0.986923266716013

它将最后3个数字“283”四舍五入为“3”.

即使用TOAD UI查看它并尝试使用TOAD输入它,我也会得到相同的结果.
为什么?是否可以在Oracle编号中插入此编号而不进行舍入?

解决方法

我认为您需要了解客户端程序如何显示数字值. Oracle NUMBER应该以完全精度存储该值;但是该值可以舍入以供客户显示.

例如,使用SQLPlus:

dev> create table dctest (x number);

Table created.

dev> insert into dctest VALUES (0.98692326671601283);

1 row created.

dev> select * from dctest;

         X
----------
.986923267

dev> column x format 0.000000000000000000000000000
dev> /

                             X
------------------------------
 0.986923266716012830000000000

如您所见,默认格式仅显示前9位有效数字.但是当我明确更改列格式(SQLPlus中的客户端功能)时,会显示插入的完整值.

dawei

【声明】:北京站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。