Jeśli chodzi o obsługę dużych liczb, przyjrzałbym się temu, co uważam za dobry przykład, jak Wieża Bohatera . Górny lewy róg:
(źródło: mzstatic.com )
Bez wchodzenia w grę sposób, w jaki obsługuje liczby, jest stosunkowo prosty: widać dwa zestawy liczb. Gdy wejdziesz wyżej w wieżę i zarobisz więcej „złota”, dwa wiadra po prostu reprezentują większe liczby.
120
120M320K - 120 Million
120B631M - 120 Billion
120T134B - 120 Trillion
Gdy gra przejdzie T, przechodzi w a, b, c ... z, aa, ab, ...
56aa608z
Robiąc to w ten sposób, wciąż wiesz, ile złota „zarobiłeś” ... nie zagłębiając się w szczegóły.
Czy naprawdę zależy ci na milionach, gdy twój numer przekroczy biliony?
Czy utrzymuje liczbę w Int, Big Int, Float, Double, Decimal, ...? Tablica niestandardowa? Kiedy traktujesz liczby w tak „niewyraźny” sposób, nie sądzę, żeby to miało znaczenie ...
Wszystko, co najprawdopodobniej ma znaczenie, to najważniejsze części - w tym przypadku pierwsze 6 ... Następnie MAYBE następne 3 lub 6 - od zarobienia kilkuset K może przejść do Milionów - ale jest punkt, w którym można zarobić kilkaset K nie wpłynie na ciebie, gdy trafisz T ... a tym bardziej aa i dalej.
Twój przebieg będzie się różnić (w zależności od tego, czego chcesz / potrzebujesz) ... Pomyślałem, że wydam mój 2c na dobry / prosty przykład.
Edytować:
Dalsze przemyślenia na temat tego, jak zaimplementowałbym system numeracji: miałbym liczbę z 3 istotnymi częściami: XXXX.RRR (...) xZZZ.
X is the most significant digits,
Y trailing
Z the multiplier (multiple of 3).
Tak więc 120.365x1 będzie 120k365 ... 120.365x2 będzie 120M365K ... itd. Uderz w 4 wiodące (1200.365x2), a następnie po prostu obróć cyfry 1.200365 (...) x3. Bam Masz 1B200M.
XY z łatwością zmieściłby się w liczbach dziesiętnych lub zmiennoprzecinkowych ... z Z siedzącym obok niego jako int / unsigned int.
Za pomocą liczby zmiennoprzecinkowej będziesz w stanie zachować znaczną - ale coraz bardziej nieistotną - liczbę cyfr po kropce.
Z oznaczałoby łatwo zrozumiały blok liczb:
K = 1
M = 2
B = 3
T = 4
a = 5
...
z = 31 (I may be off on this)
aa = 32
...
az = 58
ba = 59
...
...