Java 和 BigDecimal/numeric 的 postgres 值之间的差异
Difference between Java and postgres value of BigDecimal/numeric
我在 Java 项目中使用 BigDecimal 类型。我正在尝试使用带有数字字段的函数来保存它。 Java 和 postgres 有不同的价值。例如。来自 Java 的值 56.97 在 postgres 中保存为 56.9699999999999989。我该如何预防?
如果你去 postgresql 文档:
https://www.postgresql.org/docs/current/datatype-numeric.html
我猜您使用的是实数或双精度,描述为 "variable-precision, inexact"。
如果你希望它准确,假设我们在谈论钱或类似的东西,那么你应该使用 numeric
或 decimal
类型:
NUMERIC(precision, scale)
精度是总位数,小数位数是小数部分的位数。
例如,数字 1234.567 的精度为七,小数位数为三。
我在 Java 项目中使用 BigDecimal 类型。我正在尝试使用带有数字字段的函数来保存它。 Java 和 postgres 有不同的价值。例如。来自 Java 的值 56.97 在 postgres 中保存为 56.9699999999999989。我该如何预防?
如果你去 postgresql 文档: https://www.postgresql.org/docs/current/datatype-numeric.html
我猜您使用的是实数或双精度,描述为 "variable-precision, inexact"。
如果你希望它准确,假设我们在谈论钱或类似的东西,那么你应该使用 numeric
或 decimal
类型:
NUMERIC(precision, scale)
精度是总位数,小数位数是小数部分的位数。
例如,数字 1234.567 的精度为七,小数位数为三。