java - hibernate 正在四舍五入我的两倍?

标签 java hibernate postgresql jdbc

我有一个 double,我正试图将其保存到 postgres 数字列。

我试图保存的值是 151.33160591125488,我已经验证这实际上是 Hibernates 内部预插入接收到的参数。

但是插入后数据库中的值为 151.331605911255,即它已四舍五入为 12dp。

我知道我的列是正确的比例,因为它是一个不受限制的数字列和以下...

update tbl set col=151.33160591125488

...具有预期的效果。

所以罪魁祸首必须是 Hibernate 或 postgres-JDBC 驱动程序。

想法?

编辑:

org.hibernate.dialect.PostgreSQLDialect:

registerColumnType( Types.DOUBLE, "float8" );

select cast (151.33160591125488 as float8);

=151.331605911255

因此,double 的默认行为是不正确的,因为它并不总是保存提供给它的 double。

有谁知道如何让 hibernate 在 postgres 中使用列类型“numeric”?

最佳答案

只要精度很重要,请使用 java.math.BigDecimal .这answer对此进行了非常详细的讨论。

关于java - hibernate 正在四舍五入我的两倍?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1575923/

相关文章:

javascript - 用于捕获单词的正则表达式,无论大小写

Java JAXB - 使用重启逻辑编写 XML 文件

java - Hibernate方法抛出 'java.lang.IllegalArgumentException'

java - 映射 hibernate

python - Django 测试失败,内部错误 : no such savepoint. DB : Postgres, 通过 mysql

postgresql - postgres中的多维距离

java - addactionlistener 的问题

java - 主 Hibernate session 自动关闭

arrays - 使用 schema.CreateTable 生成 SQL 字符串失败,postgresql ARRAY

java - 我无法在java中实现同一包的接口(interface)