Sobes.tech
Back to questions
Middle+
2

Почему float плохо подходит для работы с деньгами?

Companies where asked
Magnit Tech

Answer from AI

sobes.tech AI

Тип float (числа с плавающей точкой) плохо подходит для работы с деньгами из-за ограниченной точности представления десятичных дробей. В компьютерах числа с плавающей точкой хранятся в двоичном формате, и многие десятичные дроби не могут быть представлены точно, что приводит к ошибкам округления.

Для финансовых вычислений важна точность до копеек или центов, и даже небольшие ошибки могут привести к значительным проблемам. Вместо float обычно используют:

  • Целочисленные типы, хранящие сумму в минимальных единицах (например, копейки).
  • Специализированные десятичные типы с фиксированной точкой (decimal, big.Rat в Go).

Пример на Go с использованием int64 для хранения суммы в копейках:

var priceInCents int64 = 1999 // 19.99 рублей
var quantity int64 = 3
var total int64 = priceInCents * quantity // 5997 копеек
fmt.Printf("Итог: %d.%02d рублей", total/100, total%100)

Такой подход исключает ошибки округления, характерные для float.