Операция с плавающей точкой дает неверный результат в Postgres - PullRequest
0 голосов
/ 17 октября 2018

При выполнении приведенного ниже кода

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

выводит как ложное, но когда я запускаю

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

В качестве вывода выводится true.Любое возможное объяснение будет с благодарностью.

1 Ответ

0 голосов
/ 17 октября 2018

Это вызвано арифметикой с плавающей запятой.(проверьте ссылку @a_horse_with_no_name, указанную в комментариях)

Чтобы исправить это, и если вам это действительно нужно: введите numeric, чтобы выполнить точные вычисления.float не.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...