PostgreSQL何时对双精度列类型进行四舍五入

时间:2018-09-04 20:05:57

标签: postgresql precision

我的一个同事一直告诉我不要对PostgreSQL列使用双精度类型,因为最终我会遇到四舍五入的问题。

我只知道一种情况,其中一个值以近似值存储,并且是一个十进制数字“太多”的数字被保存。

例如,如果我尝试存储1/3的结果,那么我将得到一个近似值。

另一方面,他声称上述并非唯一情况。他说的是,有时候,即使用户尝试存储数字的定义明确的数字,例如84.2或3.124,第二种情况下该值也可能另存为84.19或3.1239

这对我来说听起来很奇怪。

任何人都可以给我一个例子/证明上述情况确实可能发生吗?

1 个答案:

答案 0 :(得分:2)

您的同事是对的:远离floatdouble。并不是因为四舍五入的问题,而是因为它们是近似的数据类型。您在该列中输入的内容不一定就是您得到的内容。

如果您需要精确和准确的值,请使用numeric

有关近似数据类型陷阱的更详细的解释可以在这里找到: