正分数的平方根给出 Python 中的复数

Square root of a positive fraction gives complex number in Python

考虑这个例子- (-25.0000001**2)**(1/2)

这个returns-

Python 3.8.3

(1.5308085050574255e-15+25.0000001j)

现在我预计会有一些小错误。但这看起来像一个复数。这是什么意思?

python是否简单地使用复数表示法来描述小数位数非常小的数字?

此外,我知道这非常低效,但只是为了测试极限。

这只是 Python Operator Precedence 的副作用,你会发现

>>> -25**2
-625
>>> (-25)**2
625

由于指数 (**) 优先于负数 (-),结果为 -625。哪个平方根给你那个复数。 你应该这样做:

>>> ((-25.0000001)**2)**(1/2)
25.0000001