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