@melirika12

Почему считается неточно?

У меня в столбце есть значение 39.92, однако в обоих случаях он его считает, хотя в первом случае не должен. Почему?

SELECT COUNT(*) FROM orders
WHERE freight >= 20 AND freight < 39.92;

SELECT COUNT(*) FROM orders
WHERE freight BETWEEN 20 AND 39.92
  • Вопрос задан
  • 63 просмотра
Решения вопроса 1
@kalapanga
Если тип столбца freight это real или double precision, то Ваша проблема видимо из-за того, что число 39.92 не может быть точно представлено в этом формате. На самом деле там хранится другое значение, отличающееся в каком-то там знаке после запятой.
Не надо сравнивать числа этих типов на строгое равенство.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Первое что приходит на ум сравнение с плавающей точкой, попробуйте вот этот код

https://stackoverflow.com/questions/51847438/postg...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы