我们有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中的客户端功能)时,会显示插入的完整值.