Больше чем int64

209
26 апреля 2018, 08:05

Требуется как-то хранить числа больше чем int64 может содержать.

Есть идея создать массив int, где первый элемент - единицы, второй - тысячи, третий - миллионы и тд. Но это вариант решения очень громоздкий и занимает много места.

Какие ещё есть варианты или как улучшить предложенный?

Answer 1

Лучший вариант - использовать BigInteger. Он может хранить любое, сколь угодно большое число.

Если нужно по каким-то причинам что-то самописное, изучить, как он устроен и изобрести велосипед :)

Вот описание:

https://habr.com/post/207754/

Исследовав конструкторы структуры BigInteger можно заключить: если число помещается в int диапазон, то оно хранится в переменной _sign; если число не помещается в int диапазон, то его знак хранится в переменной _sign (-1 – для отрицательного и 1 – для положительного), а массив _bits содержит коэффициенты ai разложения длинного числа с основанием 2^32.

Answer 2

Ваша идея правильная, с той только разницей что лучше хранить число не в десятичной системе счисления, а в системе с основанием 109 или 232 - это уменьшит потребление памяти в 9 раз.

Но если целью является не тренировка в алгоритмах длинной арифметики, а решение реальных задач - лучше использовать готовый класс BigInteger.

READ ALSO
Как использовать переменную

Как использовать переменную

У меня в главном классе создан метод virtual, в классах наследниках, он переопределяетсяТак вот, мне нужно из классов наследников взять значение...

245
Как привязать цвет эллипса к полю объекта?

Как привязать цвет эллипса к полю объекта?

Пытаюсь привязать цвет эллипса к полю созданного класса, но ничего не выходитЧто я делаю не так? Xaml:

207
Алфавитный алгоритм

Алфавитный алгоритм

Требуется из цифры 1 получить A, из 2 получить B, из 3 получить C и тд до ZКак это сделать?

194