java - 从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,但没有成功
解决方案
Oracle 数据类型NUMBER(38,0)
表示该列的精度为 38,小数位数为 0。这意味着该列可以存储最多 38 位但小数位后为 0 位的值。也就是说,它只允许整数。如果您尝试插入非整数值,则该值必须四舍五入到最接近的整数作为INSERT
操作的一部分。
如果您希望该列具有 5 个小数位的值,您可能希望将其定义为NUMBER(38,5)
.
推荐阅读
- terraform - local_file 和 provider 之间的 Terraform 依赖问题
- merge - 如何合并ical日历
- asp.net-mvc - SQL Server:在存储过程中使用临时表时的并发性
- gstreamer - 如果我添加了 udpsink 插件,为什么 gstreamer 管道无法播放
- swiftui - SwiftUI - 如何基于@ObservedObject 为每个列表视图项创建编辑视图
- javascript - 如何在手机浏览器中强制重定向到新窗口或标签页?
- c++ - 可变参数函数和可变参数模板重载查找
- angular - 如何从特定位置打开和关闭对话框?
- angular - 如何更新另一个组件中的数组?
- angular - 使用 ViewChild 更新 ChildComponent 属性