Python 3.6:复数的底除法

Python 3.6: Floor division of a complex number

我需要对复数进行底除法,但似乎在 Python 3.x 中删除了复数的底除法。

有什么解决方法吗?任何想法将不胜感激。

例如

(2 + 3i) // (complex anything) will throw an error.

python3 中的复数的虚部定义为 j,而不是 i

你是对的,在 Python 3 中你不能再计算复数的底除法,但是如果你需要一个解决方法,你需要指定你想要它的行为方式。

在任何情况下,您都需要实现一个继承自 complex 的新 class,并覆盖 __floordiv__ 方法

我刚刚找到了 mpmath 库。它有大量的工具,包括用于复数的 floor 和 mod。它似乎实际上包含在 SymPy 中。

除非(anything)(2+3j)的倍数,否则你的答案也会很复杂,因此楼层划分不明确。您可以通过乘以 (anything).conjugate / (abs(anything)**2)

来实现除法