首页 > 解决方案 > BigDecimal/numeric的Java和postgres值的区别

问题描述

我在 Java 项目中使用 BigDecimal 类型。我正在尝试使用带有数字字段的函数来保存它。Java 和 postgres 有不同的价值。例如,Java 中的 56.97 值在 postgres 中保存为 56.9699999999999989。我该如何预防?

标签: javapostgresqlprecisionnumericbigdecimal

解决方案


如果你去 postgresql 文档: https ://www.postgresql.org/docs/current/datatype-numeric.html

我猜您使用的是实数或双精度,它们被描述为“可变精度,不精确”。

如果你想让它准确,假设我们在谈论金钱或类似的东西,那么你应该使用numericordecimal类型:

NUMERIC(precision, scale)

精度是总位数,而小数位数是小数部分的位数。

例如,数字 1234.567 的精度为 7,小数位数为 3。


推荐阅读