В каком формате удобно хранить деньги

«В каком формате удобно хранить деньги» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для хранения денег в Go лучше использовать decimal.Decimal из пакета github.com/shopspring/decimal. Встроенные float типы (float32/float64) не подходят из-за проблем с точностью при операциях с плавающей запятой.

Пример:

import "github.com/shopspring/decimal"

amount := decimal.NewFromFloat(123.45)
tax := amount.Mul(decimal.NewFromFloat(0.2)) // 20% налог
total := amount.Add(tax)

Альтернативы:

  1. Хранение в копейках/центах (int64) для простых случаев
  2. math/big.Rat для дробей, но менее удобен чем decimal

Decimal обеспечивает:

  • Точные вычисления
  • Поддержку округлений
  • Удобный API для финансовых операций