Próbuję myśleć o tym, jak bym zrobił obliczenia na bardzo dużych liczbach (do nieskończoności - intergeruje brak liczb zmiennoprzecinkowych), jeśli konstrukcja języka nie jest w stanie obsłużyć liczb większych niż pewna wartość.
Jestem pewien, że nie jestem pierwszym ani ostatnim, który zadałby to pytanie, ale wyszukiwane hasła nie dają mi algorytmu do obsługi takich sytuacji. Raczej większość sugestii oferuje zmianę języka lub zmianę zmiennej lub mówi o rzeczach, które wydają się nieistotne dla mojego wyszukiwania. Potrzebuję więc trochę przewodnictwa.
Naszkicowałbym taki algorytm:
Określ maksymalną długość zmiennej całkowitej dla języka.
Jeśli liczba jest większa niż połowa długości maksymalnej długości zmiennej, podziel ją na tablicę. (daj trochę pokoju do zabawy)
Kolejność tablic [0] = liczby najbardziej po prawej [n-max] = liczby najbardziej po lewej
Dawny. Num: 29392023 Tablica [0]: 23, Tablica [1]: 20, tablica [2]: 39, tablica [3]: 29
Ponieważ ustaliłem połowę długości zmiennej jako punkt odcięcia, mogę następnie obliczyć te, dziesiąte, setne itd. Umieścić za pomocą znacznika w połowie, aby jeśli maksymalna zmienna długość wynosiła 10 cyfr od 0 do 9999999999, to wiem, że zmniejszając to do pięciu cyfr, daj mi trochę pokoju do zabawy.
Więc jeśli dodam lub pomnożę, mogę mieć funkcję sprawdzania zmiennych, która zobaczy, że szósta cyfra (z prawej) tablicy [0] to to samo miejsce, co pierwsza cyfra (z prawej) tablicy [1].
Dzielenie i odejmowanie ma swoje własne problemy, o których jeszcze nie myślałem.
Chciałbym wiedzieć o najlepszych implementacjach obsługi większych liczb niż program może.