Есть ли алгоритм без потерь для деления? - PullRequest
1 голос
/ 25 марта 2011

Так что уравнения в математике (например, p * 1/p = 1) всегда будут сохраняться в компьютерах?

Ответы [ 2 ]

6 голосов
/ 25 марта 2011

Если вы храните свой номер как пару числитель / знаменатель, тогда да, вы можете сделать его без потерь.

Под этим я подразумеваю число 10, разделенное на 3, которое хранится не как 3.3333333, а как пара {10,3}. Это означает, что при повторном умножении на 3 оно станет 10.

Конечно, это может не сработать во всех крайних случаях. Вы по-прежнему не сможете представлять иррациональные числа, такие как PI или квадратный корень из 2, поскольку они не могут быть представлены ни в виде конечной десятичной последовательности, ни в виде отношения.

Но, только для деления (используя рациональные числа), я не могу представить себе крайний случай, когда это не сработает.

0 голосов
/ 25 марта 2011

Используйте арифметическую библиотеку произвольной точности, такую ​​как GNU GMP, чтобы получить числа «бесконечной точности».Библиотека доступна по адресу:

http://gmplib.org/

...