3

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

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

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

4

1 回答 1

6

这是一个运算符优先级问题:

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

另外,请注意,除非您从提供 Python 3.x 行为(和 a )的 中(1/3)导入,否则该值为零。用于获得 1/3 作为浮点数。division__future__ValueError1/3.

于 2013-02-14T15:50:56.510 回答