Для обработки больших чисел я бы посмотрел на хороший пример, например, Tower of Hero . Верхний левый угол:
(источник: mzstatic.com )
Не вдаваясь в игровой процесс, способ обработки чисел относительно прост: вы видите две группы чисел. Когда вы поднимаетесь выше в башне и делаете больше «золота», два ведра просто представляют большие числа.
120
120M320K - 120 Million
120B631M - 120 Billion
120T134B - 120 Trillion
Как только игра проходит T, она перемещается в a, b, c ... z, aa, ab, ...
56aa608z
Делая это таким образом, он по-прежнему позволяет узнать, сколько золота вы «заработали» ... при этом не затягивая игру в деталях.
Вы действительно заботитесь о миллионах, когда ваше число превышает триллионы?
Сохраняет ли оно число в Int, Big Int, Float, Double, Decimal, ...? Custom Array? Когда вы обрабатываете числа таким «нечетким» способом, я не думаю, что это имеет значение ...
Все, что, вероятно, имеет значение, являются наиболее значимыми частями - в данном случае, первыми 6 ... После этого МОГУТ БЫТЬ следующие 3 или 6 - поскольку зарабатывание нескольких сотен К может перерасти в миллионы - но наступает момент, когда можно заработать несколько сотен килограмм не повлияют на вас, когда вы нажмете на T ... намного меньше и больше.
Ваш пробег будет варьироваться (в зависимости от того, что вы хотите / нужно) ... Просто подумал, что я выложу свой 2с на том, что я считаю хорошим / простым примером.
Редактировать:
Дальнейшие размышления о том, как бы я внедрил систему нумерации: у меня был бы номер с 3 значимыми частями: XXXX.YYY (...) xZZZ.
X is the most significant digits,
Y trailing
Z the multiplier (multiple of 3).
Таким образом, 120.365x1 будет 120k365 ... 120.365x2 будет 120M365K ... и т. Д. Нажмите 4 ведущих (1200.365x2), а затем просто поверните цифры 1.200365 (...) x3. Bam. У вас есть 1B200M.
XY легко поместится в десятичном или плавающем числах ... с Z рядом с ним как int / unsigned int.
С плавающей точкой вы сможете сохранить значительное, но все более неважное количество цифр после точки.
Z будет легко представлять легко понятный блок чисел:
K = 1
M = 2
B = 3
T = 4
a = 5
...
z = 31 (I may be off on this)
aa = 32
...
az = 58
ba = 59
...
...