为什么我得到分数幂的积极结果?

Poi*_*oik 3 python sign python-2.7

IDLE的以下输出对我来说毫无意义.

>>> a=-1.0
>>> a**(1/3)
1.0
>>> a==-1.0
True
>>> -1.0**(1/3)
-1.0
Run Code Online (Sandbox Code Playgroud)

为什么两个理论上等价的陈述会返回不同的结果?Python(2.7)如何处理__pow__双倍的方法,这是结果?我只是用整数尝试它并收到相同的结果.除了计算__pow__函数输入的符号并将其复制到结果之外,我该如何解决这个问题?

Fre*_*Foo 6

这是运营商的优先问题:

>>> -1.0**(1/3)
-1.0
>>> (-1.0)**(1/3)
1.0
Run Code Online (Sandbox Code Playgroud)

另外,请注意,(1/3)除非您division从中导入,否则为零__future__,这会产生Python 3.x行为(和a ValueError).使用1/3.得到1/3为float.

  • 更不用说`1/3`是'0`. (5认同)