Para lidar com grandes números, eu consideraria um bom exemplo como Tower of Hero . Canto superior esquerdo:
(fonte: mzstatic.com )
Sem entrar no jogo, a maneira como ele lida com os números é relativamente simples: você vê dois grupos de números. À medida que você sobe na torre e produz mais "ouro", os dois baldes simplesmente representam números maiores.
120
120M320K - 120 Million
120B631M - 120 Billion
120T134B - 120 Trillion
Quando o jogo passa T, ele se move para a, b, c ... z, aa, ab, ...
56aa608z
Fazendo dessa maneira, ele ainda permite saber quanto ouro você "ganhou" ... sem atrapalhar o jogo em detalhes.
Você realmente se importa com milhões quando seu número ultrapassa os trilhões?
Mantém o número em Int, Big Int, Float, Double, Decimal, ...? Matriz personalizada? Quando você está lidando com números de maneira "confusa", não acho que isso importe ...
Tudo o que importa é a parte mais significativa - neste caso, os 6 primeiros ... Depois disso, TALVEZ os próximos 3 ou 6 - já que ganhar algumas centenas de K pode rolar para milhões - mas há um ponto em que ganhar algumas centenas de K não afetarão você quando você acertar T ... muito menos aa e além.
Sua milhagem varia (dependendo do que você deseja / precisa) ... Só pensei em colocar meu 2c no que acho um exemplo bom / simples.
Editar:
Pensamentos adicionais sobre como eu implementaria o sistema de numeração: eu teria um número com três partes significativas: XXXX.YYY (...) xZZZ.
X is the most significant digits,
Y trailing
Z the multiplier (multiple of 3).
Então 120.365x1 seria 120k365 ... 120.365x2 seria 120M365K ... etc. Bata os 4 à esquerda (1200.365x2) e gire os números 1.200365 (...) x3. Bam. Você tem 1B200M.
XY caberia facilmente em um decimal ou flutuante ... com Z sentado próximo a ele como int / unsigned int.
Com um flutuador, você poderá manter um número considerável - mas cada vez mais sem importância - de dígitos após o ponto.
Z representaria facilmente um bloco de números facilmente compreensível:
K = 1
M = 2
B = 3
T = 4
a = 5
...
z = 31 (I may be off on this)
aa = 32
...
az = 58
ba = 59
...
...