#python #python_3x #числа
В 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++, например, можно было бы сделать следующим образом: complexz(Fraction(2, 3), Fraction(5, 7)); Нельзя ли нечто подобное сделать в Python? Я пока, что вижу только одно решение написать свой класс Complex, но надеюсь есть решение проще.
Ответы
Ответ 1
Боюсь, что другого способа действительно нет. Единственное что, хорошим тоном будет наследоваться от абстрактного класса Complex https://docs.python.org/3.5/library/numbers.html. Это не даст упустить какие-то важные методы и в итоге позволит сделать класс с интерфейсом идентичным оригинальному.
Комментариев нет:
Отправить комментарий