Тип decimal в Golang

Ни для кого не секрет, что для работы с финансами не стоит использовать тип float, так как важно не потерять итоговую точность суммы при операциях с деньгами. Но что меня удивляет больше всего в Golang, так это то, что в языке, который в основном используется в финтехе, нет типа Decimal (https://github.com/golang/go/issues/12127). И чтобы это компенсировать, вам приходится отдавать предпочтение сторонним решениям. А именно, как я понимаю, одним из самых популярных пакетов является decimal (https://github.com/shopspring/decimal). Я, конечно же, в курсе о существовании math/big и в каких-нибудь своих простых проектах, возможно, бы использовал big.Int (https://pkg.go.dev/math/big#Int), хоть это и неудобно. Но для серьезных вещей, согласитесь, вы бы отдали предпочтение десятичным числам большой точности, которые реализованы во внутреннем пакете, а не в стороннем. И эти отговорки мейнтейнеров насчет добавления этого функционала в стандартную библиотеку Go выглядят очень странно на фоне того, что тип decimal поддерживается из коробки даже в таких языках, как Python (https://docs.python.org/3/library/decimal.html), Ruby (https://github.com/ruby/bigdecimal), Java (https://docs.oracle.com/en/java/javase/26/docs/api/java.base/java/math/BigDecimal.html). А как вы обрабатываете большие десятичные числа в своем коде в проектах на Golang? Какими сторонними библиотеками пользуетесь: currency (https://github.com/bojanz/currency) или go-money (https://github.com/Rhymond/go-money), а может быть, apd (https://github.com/cockroachdb/apd)? Или все-таки используете встроенный тип big.Int? Хотели бы вы, чтобы в Golang наконец-то появился big.Decimal?

#Go #Bignum #Decimal #Float #Money #Currency #Fintech

Тип decimal в Golang | Сетка — социальная сеть от hh.ru