Какой тип данных следует использовать для хранения денежных сумм в базе данных?

Для денежных сумм обычно выбирают точный DECIMAL/NUMERIC с заданной точностью либо целое число минимальных денежных единиц. FLOAT/DOUBLE нежелательны из-за ошибок двоичного представления дробей.

Короткий ответ

Что ответить на собеседовании

Для денежных сумм обычно выбирают точный DECIMAL/NUMERIC с заданной точностью либо целое число минимальных денежных единиц. FLOAT/DOUBLE нежелательны из-за ошибок двоичного представления дробей.

Подробный разбор

Ответ с пояснениями

Для денежных сумм обычно выбирают точный DECIMAL/NUMERIC с заданной точностью либо целое число минимальных денежных единиц. FLOAT/DOUBLE нежелательны из-за ошибок двоичного представления дробей.

Храните валюту отдельно и явно задайте правила округления. Целые копейки удобны для фиксированного масштаба, но у разных валют число дробных знаков различается, а расчёт курсов требует большей промежуточной точности. Проверьте диапазон и переполнение. Даже точный тип не определяет бизнес-правила: момент округления, комиссии и налоги должны быть согласованы независимо от выбранной СУБД.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее