Для денег в PostgreSQL обычно используют bigint в минимальных единицах либо numeric(p,s) с явной точностью. Float и double precision не подходят для точного денежного учёта.
В каком типе данных хранить amount (сумму денег) в PostgreSQL?
Для денег в PostgreSQL обычно используют bigint в минимальных единицах либо numeric(p,s) с явной точностью. Float и double precision не подходят для точного денежного учёта.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для денег в PostgreSQL обычно используют bigint в минимальных единицах либо numeric(p,s) с явной точностью. Float и double precision не подходят для точного денежного учёта.
Храните валюту отдельно и определите правила округления. Bigint удобен для фиксированного масштаба, numeric — когда требуется точная десятичная дробь с заданной шкалой. Учитывайте диапазон промежуточных сумм и конвертации. Выбор зависит от бизнес-контракта, а не только названия поля amount; разные валюты нельзя складывать без правила пересчёта.