Большие числа в 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

→ Ссылка