Para manejar números grandes, miraría lo que creo que es un buen ejemplo como Tower of Hero . Esquina superior izquierda:
(fuente: mzstatic.com )
Sin entrar en el juego, la forma en que maneja los números es relativamente simple: ves dos cubos de números. A medida que asciendes en la torre y haces más "oro", los dos cubos simplemente representan números más grandes.
120
120M320K - 120 Million
120B631M - 120 Billion
120T134B - 120 Trillion
Una vez que el juego pasa T, se mueve a a, b, c ... z, aa, ab, ...
56aa608z
Al hacerlo de esta manera, todavía te permite saber cuánto oro has "ganado" ... sin atascar el juego en detalles.
¿Realmente te importan Millones cuando tu número supera los Trillones?
¿Mantiene el número en Int, Big Int, Float, Double, Decimal, ...? Matriz personalizada? Cuando manejas números de una manera tan "difusa", no creo que importe ...
Todo lo que probablemente importa son las partes más importantes, en este caso, los primeros 6 ... Después de eso, tal vez los próximos 3 o 6, ya que ganar unos cientos de K puede pasar a Millones, pero hay un punto en el que ganar unos pocos cientos de K no te afectarán cuando golpees T ... mucho menos aa y más allá.
Su millaje variará (dependiendo de lo que quiera / necesite) ... Solo pensé que pondría mi 2c en lo que creo que es un buen / simple ejemplo.
Editar:
Más ideas sobre cómo implementar el sistema de numeración: tendría un número con 3 partes significativas: XXXX.YYY (...) xZZZ.
X is the most significant digits,
Y trailing
Z the multiplier (multiple of 3).
Por lo tanto, 120.365x1 sería 120k365 ... 120.365x2 sería 120M365K ... etc. Presione los 4 primeros (1200.365x2), luego gire los números 1.200365 (...) x3. Bam Tienes 1B200M.
XY encajaría fácilmente en un decimal o flotante ... con Z sentado a su lado como int / unsigned int.
Con un flotador, podrá mantener una cantidad considerable, pero cada vez menos importante, de dígitos después del punto.
Z representaría fácilmente un bloque de números fácilmente comprensible:
K = 1
M = 2
B = 3
T = 4
a = 5
...
z = 31 (I may be off on this)
aa = 32
...
az = 58
ba = 59
...
...