0 == ((-1)**.5).real
...在python 3.5.1中为False,而:
0 == complex(0,1).real
... 是真的。这两种情况的处理方式有何不同?float类的零检测功能什么时候起作用,什么时候不起作用?
>>> (-1)**0.5
(6.123233995736766e-17+1j)
这就是全部-由于浮点数的变化,计算结果的实部不完全是零。但是在您的其他情况下,它是:
>>> complex(0,1).real
0.0
顺便说一句,**
调用通用的求幂例程,该例程在幕后增加了几层浮点舍入错误。如果知道要平方根,最好使用平方根函数:
>>> import cmath
>>> cmath.sqrt(-1)
1j
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句