Когда PostgreSQL округляет тип столбца двойной точности - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть коллега, который постоянно говорит мне не использовать тип с двойной точностью для столбца PostgreSQL, потому что в конечном итоге у меня будут проблемы с округлением.

Мне известен только один случай, когда значение сохраняется с аппроксимацией и когда число с «слишком большим количеством» десятичных цифр сохраняется.

Например, если я попытаюсь сохранить результат 1/3, я получу приближение.

С другой стороны, он утверждает, что вышесказанное - не единственный случай. Он говорит, что иногда, даже если пользователь пытается сохранить число с четко определенным количеством цифр, например, 84,2 или 3,124, значение может быть сохранено как 84,19 или 3,1239 для второго случая

Это звучит очень странно для меня.

Может ли кто-нибудь дать мне пример / доказательство того, что вышеупомянутое действительно может произойти?

1 Ответ

0 голосов
/ 04 сентября 2018

Ваш коллега прав: держитесь подальше от float или double. Но не столько из-за проблемы округления, сколько потому, что это приблизительные типы данных. То, что вы помещаете в эту колонку, не обязательно то, что вы получаете.

Если вам нужна точность и точность, используйте numeric.

Более подробное объяснение подводных камней приблизительных типов данных можно найти здесь:

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