В Python есть встроенный модуль поддерживающий точные вычисления с рациональными числами:
from fractions import Fraction
print(Fraction(2, 3) + Fraction(5, 7))
Все здорово, если учитывать, что питон по умолчанию использует длинную арифметику.
Мне недавно понадобилось использовать комплексные числа только с рациональными мнимой и действительной частями. Вот что из этого вышло:
>>> from fractions import Fraction
>>> print(Fraction(2, 3) + Fraction(5, 7) * 1j)
(0.6666666666666666+0.7142857142857143j)
>>> print(complex(Fraction(2, 3), Fraction(5, 7)))
(0.6666666666666666+0.7142857142857143j)
Fraction автоматически приводится к float. Как решить проблему?
В C++, например, можно было бы сделать следующим образом:
complex
Нельзя ли нечто подобное сделать в Python?
Я пока, что вижу только одно решение написать свой класс Complex, но надеюсь есть решение проще.
Ответ
Боюсь, что другого способа действительно нет.
Единственное что, хорошим тоном будет наследоваться от абстрактного класса Complex https://docs.python.org/3.5/library/numbers.html. Это не даст упустить какие-то важные методы и в итоге позволит сделать класс с интерфейсом идентичным оригинальному.
Комментариев нет:
Отправить комментарий