提问人:Bob 提问时间:2/24/2020 更新时间:2/24/2020 访问量:3072
BigDecimal/numeric 的 Java 和 postgres 值的区别
Difference between Java and postgres value of BigDecimal/numeric
问:
我在 Java 项目中使用 BigDecimal 类型。我正在尝试使用带有数值字段的函数来保存它。Java 和 postgres 具有不同的价值。例如,Java 中的值 56.97 在 postgres 中保存为 56.96999999999999989。我该如何预防?
答:
5赞
Buddy Christ
2/24/2020
#1
如果您转到 postgresql 文档:https://www.postgresql.org/docs/current/datatype-numeric.html
我猜您正在使用实精度或双精度,它们被描述为“可变精度,不精确”。
如果你希望它是准确的,假设我们正在谈论金钱或类似的东西,那么你应该使用或输入:numeric
decimal
NUMERIC(precision, scale)
精度是总位数,而小数位数是分数部分的位数。
例如,数字 1234.567 的精度为 7,小数位数为 3。
评论
1赞
Laurenz Albe
2/24/2020
Java 不是“真正的或双精度”。BigDecimal
0赞
Buddy Christ
2/25/2020
在PostgreSQL中,实精度或双精度是postge中的数值类型。但是,如果您需要精确的数据,则应使用数字或十进制。
0赞
Laurenz Albe
2/25/2020
啊,我现在明白了。OP在说“数字”时并不是故意的。numeric
评论
varchar