Почему Postgres select возвращает неправильный расчет с плавающей запятой? - PullRequest
0 голосов
/ 29 марта 2020

Почему SELECT 2 * 4 * ( 5 / 2) * 4 возвращает 64 вместо 80?

Реальный запрос, который я выполняю, выглядит так:

SELECT 2 * equity_gains_score * (tenure_score / 2) * investor_score AS propensity

, но у меня был тот же результат когда я запустил его, подставив числа для столбцов. Как я могу исправить это утверждение?

1 Ответ

1 голос
/ 29 марта 2020

Postgres делает целое число деление. Таким образом, 5/2 является 2, а не 2.5.

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

SELECT 2 * 4 * ( 5 / 2.0) * 4

Или преобразовать значение в число c:

SELECT 2 * 4 * ( 5::numeric / 2.0) * 4

Примечание. Если вы хотите получить целое число в качестве результата, вам необходимо преобразовать обратно в целое число:

SELECT (2 * 4 * ( 5 / 2.0) * 4)::int
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...