TGViewer
SQL для тестировщика SQL для тестировщика @sql_for_qa · 6.27K subscribers
Post #961 1.31K
Как хранить деньги в базах данных и почему это не так просто, как кажется

#почитать

Некоторые валюты имеют фиксированный курс к другой валюте. Например, гонконгский доллар (HKD) с 1983 года привязан к доллару США в диапазоне 7,75-7,85 HKD за 1 USD.

Большинство валют ведут себя предсказуемо: 2 знака после запятой (точность, precision) — доллары, евро, рубли с их центами и копейками. Но есть и «особенные» — японская йена вообще без дробных частей, а иорданский динар делится на 1000 филсов и может довести до тысячных (0.001 JOD). Приятно, когда есть стандарты, но реальный мир любит отклонения.

Мавритания и Мадагаскар пошли своим путем: их валюты не используют десятичную систему: 1 угия = 5 хумов, 1 ариари = 5 ираймбиланджа.

У криптовалют может быть до 18 десятичных знаков (например, у ETH).

Количество знаков после запятой может изменяться со временем из-за инфляции. Деноминация решает проблему кардинально, но требует введения нового валютного кода. Пример из российской практики: до 29 февраля 2004 года использовался код валюты RUR (810), а после деноминации был введен RUB (643). Интересно, что в некоторых legacy-системах до сих пор можно встретить старый код.

У некоторых валют младшие единицы существуют только на бумаге — физически 0.1 японской йены или 0.1 южнокорейской воны не существует, хотя технически такие суммы возможны в расчетах.

При хранении цен на недорогие товары может потребоваться дополнительная точность. Например, после конвертации товар за $0.01 может стоить 0.009 евро — такую цену нужно где-то хранить, даже если евро формально имеет только 2 знака после запятой.

⏱Читать статью
  • 👏 9
  • ❤ 3
  • 🔥 1
More from @sql_for_qa
  1. Sep 30, 2026Строковые константы в MS SQL #почитать Строковые константы в MS SQL кажутся очень простыми…
  2. Sep 22, 2026Увольняем джуниора: автоматизируем анализ данных c Claude Code, Codex, Cursor, OpenCode #п…
  3. Sep 16, 2026Хроники тестирования Data Quality #почитать В современных data-процессах ключевую роль игр…
  4. Aug 31, 2026Если UPDATE столкнулся с заблокированной строкой #почитать В PostgreSQL и Oracle Database…
  5. Aug 26, 2026Стратегии партицирования базы данных: горизонтальное и вертикальное разделение #почитать П…
  6. Aug 12, 2026Как ускорить SQL-запрос в миллион раз без изменения кода #почитать Однажды при мониторинге…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →