Я пытаюсь подумать о том, как бы я делал вычисления для чрезвычайно больших чисел (до бесконечности - без целых чисел), если языковая конструкция не способна обрабатывать числа, превышающие определенное значение.
Я уверен, что я не первый и не последний, кто задает этот вопрос, но используемые мной поисковые термины не дают мне алгоритма для решения этих ситуаций. Скорее большинство предложений предлагают изменение языка или изменение переменной, или говорят о вещах, которые кажутся не относящимися к моему поиску. Так что мне нужно немного руководства.
Я бы набросал алгоритм так:
Определите максимальную длину целочисленной переменной для языка.
Если число больше половины длины максимальной длины переменной, разбейте ее на массив. (дать небольшую игровую комнату)
Порядок массива [0] = наиболее правые числа [n-max] = наиболее левые числа
Ex. Num: 29392023 Массив [0]: 23, Массив [1]: 20, массив [2]: 39, массив [3]: 29
Поскольку я установил половину длины переменной в качестве точки разметки, я могу затем вычислить единицы, десятые, сотые и т. Д. Поместить через полпути так, чтобы, если максимальная длина переменной составляла 10 цифр от 0 до 9999999999, я знал, что наполовину до пяти цифр дайте мне немного игровой комнаты.
Поэтому, если я добавлю или умножу, у меня может быть функция проверки переменных, которая видит, что шестая цифра (справа) массива [0] находится в том же месте, что и первая цифра (справа) массива [1].
У деления и вычитания есть свои проблемы, о которых я еще не думал.
Я хотел бы знать о лучших реализациях поддержки больших чисел, чем программа может.