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

时间:2013-02-14 15:48:54

标签: python python-2.7 sign

IDLE的以下输出对我没有意义。

>>> a=-1.0
>>> a**(1/3)
1.0
>>> a==-1.0
True
>>> -1.0**(1/3)
-1.0

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

1 个答案:

答案 0 :(得分:6)

这是运营商的优先问题:

>>> -1.0**(1/3)
-1.0
>>> (-1.0)**(1/3)
1.0

另请注意,除非您从(1/3)导入division,否则__future__为零,这会产生Python 3.x行为(以及ValueError)。使用1/3.将1/3作为浮点数。