IDLE的以下输出对我没有意义。
>>> a=-1.0
>>> a**(1/3)
1.0
>>> a==-1.0
True
>>> -1.0**(1/3)
-1.0
为什么两个理论上等价的陈述会返回不同的结果? Python(2.7)如何处理__pow__
方法的双精度,这是结果?我只是用整数尝试它并收到相同的结果。除了计算__pow__
函数输入的符号并将其复制到结果之外,我该如何解决这个问题?
答案 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作为浮点数。