我们有Oracle Server 10.2.
为了测试这个,我有一个非常简单的表.
CREATE TABLE MYSCHEMA.TESTNUMBER
(
TESTNUMBER NUMBER
)
Run Code Online (Sandbox Code Playgroud)
当我尝试插入0.98692326671601283时,数字会被四舍五入.
INSERT INTO MYSCHEMA.TESTNUMBER (TESTNUMBER)
VALUES (0.98692326671601283);
Run Code Online (Sandbox Code Playgroud)
选择返回:
select * from TESTNUMBER
Run Code Online (Sandbox Code Playgroud)
0.98692326671601 3
它将最后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
Run Code Online (Sandbox Code Playgroud)
如您所见,默认格式仅显示前9位有效数字.但是当我明确更改列格式(SQLPlus中的客户端功能)时,会显示插入的完整值.
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |