首页 > 解决方案 > 从java插入的oracle sql数据库舍入值中的NUMBER数据类型

问题描述

我正在将来自 java 的数据插入到 oracle 数据库中。

ps1.setDouble(4, Double.parseDouble(record.get(3)));

record.get(3) 是一个包含 -250.8 的字符串。即使我这样做

System.out.println(Double.parseDouble(record.get(3)));

我得到-250.8

代码运行良好,但我在 oracle 数据库中看到的是-251。Oracle 中的数据类型是Number(38,0)接受十进制数。

如何在 oracle 中显示十进制值?

我还尝试了 Java 中的 Float 而不是 Double,但没有成功

标签: javajdbcprepared-statementoracle-sqldeveloper

解决方案


Oracle 数据类型NUMBER(38,0)表示该列的精度为 38,小数位数为 0。这意味着该列可以存储最多 38 位但小数位后为 0 位的值。也就是说,它只允许整数。如果您尝试插入非整数值,则该值必须四舍五入到最接近的整数作为INSERT操作的一部分。

如果您希望该列具有 5 个小数位的值,您可能希望将其定义为NUMBER(38,5).


推荐阅读