Большие числа в golang
Всем привет. Необходимо слагать, вычитать, умножать и делить числа больше чем 2^20 какие с этим могут возникнуть трудности? Каким трудности можно преодолеть? В какую сторону копать чтобы делать это правильно?
Ответы (1 шт):
Автор решения: aksioto
→ Ссылка
Трудности могут появиться при попытке объявить переменную, превышающую 18 квинтиллионов:
var distance uint64 = 24e18 // Ошибка: 24000000000000000000 overflows uint64
Чтобы обойти эту проблему можно задействовать математику чисел с плавающей запятой.
Также в go есть замечательный пакет big. Его можно использовать для реально больших чисел, которые не влазят в int64.
Пакет big предоставляет три типа данных:
big.Int- для крупных целых чисел, когда 18 квинтиллионов недостаточно;big.Float- для вещественных чисел с плавающей запятой производной точности;big.Ratдля дробей вроде 1/3.
Тут можно ознакомиться более подробно и с примерами: https://golangify.com/big-numbers