我正在尝试使用这样的简单查询对 800 万个浮点 ( REAL
) 值求和:
SELECT SUM(metric) FROM metrics;
但是,它返回的结果非常不准确。它应该返回 137,586.77,但它返回 137,303(差 283.77)
有没有办法强制查询更精确?
我正在尝试使用这样的简单查询对 800 万个浮点 ( REAL
) 值求和:
SELECT SUM(metric) FROM metrics;
但是,它返回的结果非常不准确。它应该返回 137,586.77,但它返回 137,303(差 283.77)
有没有办法强制查询更精确?
根据postgresql 文档,
由于您使用了实数数据类型,因此您可以将实数转换为数字。然后你可以得到你预期的结果。
根据 REAL 数据类型http://www.postgresql.org/docs/9.2/static/datatype-numeric.html#DATATYPE-FLOAT的文档,它的精度为 6 位十进制数字。这就是你所看到的。如果您需要更高的精度,则需要使用双精度或具有固定精度的数字。
也许将实数转换为更精确的东西并对结果求和会给你你需要的东西,例如:
从指标中选择 SUM(metric::float);