Ответ
Для хранения денег в 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)
Альтернативы:
- Хранение в копейках/центах (int64) для простых случаев
math/big.Ratдля дробей, но менее удобен чем decimal
Decimal обеспечивает:
- Точные вычисления
- Поддержку округлений
- Удобный API для финансовых операций