浮点运算在Postgres中给出错误的结果

时间:2018-10-17 06:58:36

标签: sql postgresql floating-point

运行以下代码时

select 5259.56::FLOAT8=(1800.12::FLOAT8+3459.44::FLOAT8)

输出为false,但是当我运行

select 5259.55::FLOAT8=(1800.11::FLOAT8+3459.44::FLOAT8)

输出为true。任何可能的解释将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是由浮点运算引起的。 (检查注释中提供的链接@a_horse_with_no_name)

要修复它,如果确实需要它,请执行以下操作:键入numeric可以进行精确的计算。 float不是。

https://www.postgresql.org/docs/current/static/datatype-numeric.html