Junior — Middle
How to correctly choose the data type for storing cost considering kopecks in the system?
sobes.tech AI
Answer from AI
To store monetary values with cents, it is important to choose a data type that ensures accuracy and avoids rounding errors.
Common approaches include:
-
Integer types — store the amount in the smallest units (e.g., cents). Instead of 123.45 rubles, store 12345 (an integer). This eliminates rounding errors in arithmetic.
-
Fixed-point decimal types (e.g.,
decimalorbig.Ratin Go) — allow working with numbers with a fixed number of decimal places.
In Go, for financial calculations, it is common to use integer values or third-party libraries for decimal arithmetic, such as shopspring/decimal:
import "github.com/shopspring/decimal"
price := decimal.NewFromFloat(123.45)
// operations with precise decimal arithmetic
Thus, the choice depends on the requirements for accuracy and ease of working with monetary values.