Реализация отрицательных показателей с целыми числами произвольной точности?

Я пытаюсь сделать калькулятор, используя математику произвольной точности, но я не могу понять, как обрабатывать отрицательные показатели. Каков наиболее эффективный способ выполнить операцию с участием n**-x? До сих пор я пробовал 1/n ** x, проблема в том, что у меня нет возможности узнать, сколько чисел будет следовать за десятичной точкой, и использование целых чисел, например, побеждает цель создания калькулятора с использованием произвольной точности, как это было бы ограничить размер разрешенных входных чисел. Мне было интересно, есть ли другой способ сделать это.

Я программирую на C, но любой метод для отрицательных показателей работает честно.


person vega2015    schedule 25.03.2016    source источник
comment
Какое это имеет отношение к связанным спискам?   -  person Oliver Charlesworth    schedule 25.03.2016
comment
Не могли бы вы рассказать, как ваш калькулятор использует связанные списки? Это для хранения целых чисел произвольной точности?   -  person templatetypedef    schedule 25.03.2016
comment
каждый узел списка содержит цифру обрабатываемых чисел, да, я забыл упомянуть, что это произвольная точность, однако мне нужен точный результат, если я должен был преобразовать из двоичного в десятичный, чтобы позже я мог добавить его к другому мощность 2**-х   -  person vega2015    schedule 25.03.2016


Ответы (1)


Если вам нужно поддерживать арифметику произвольной точности с отрицательными показателями степени, похоже, вы можете захотеть сохранить свое число как дробь в простейшей форме с числителем и знаменателем, каждый из которых хранит целые числа произвольной точности. Чтобы реализовать что-то вроде x-n, где x = a / b, вы получите число bn / an. Таким образом, вам вообще не нужно беспокоиться о десятичных цифрах, что хорошо, потому что большинство действительных чисел не имеют конечных десятичных представлений.

person templatetypedef    schedule 25.03.2016
comment
похоже, что я мог бы использовать это, однако я немного смущен тем, что такое b, не могли бы вы привести пример с использованием реальных чисел? - person vega2015; 26.03.2016
comment
Конечно! Предположим, вы хотите сохранить число 5. Вместо этого сохраните 5/1. Затем, чтобы вычислить 5^-3, вы можете сохранить 1/5^3 = 1/125. - person templatetypedef; 26.03.2016
comment
это определенно ставит меня на правильный путь, спасибо - person vega2015; 26.03.2016