首页 > 解决方案 > python中的立方体根在shell中不同

问题描述

我注意到当我运行这个程序时:

from random import *
z=random()*-1
print(z)
print(z**(1/3))

它返回一个复杂的值。例如,有一次它的输出是

-0.08310434620988971
(0.21819489400101133+0.37792464236185713j)

但是,如果我在 shell 中运行等效命令,它会返回正确答案: 在此处输入图像描述

我已经多次重复这个实验,结果都是一样的。有人知道这是为什么吗?

标签: pythonpython-3.xmathpython-3.7

解决方案


求幂的符号优先级更高。虽然-0.08310434620988971**(1/3)实际上是

-(0.08310434620988971**(1/3))

z**(1/3)计算

(-0.08310434620988971)**(1/3)

在第二个示例z中已经是一个负数,因此该上下文中的结果是正确的。


推荐阅读