python中不一致的小数指数
Posted
技术标签:
【中文标题】python中不一致的小数指数【英文标题】:Inconsistent fractional exponents in python 【发布时间】:2020-10-30 14:08:24 【问题描述】:请任何人在下面的示例中解释为什么如果取决于所提出的数字是直接输入还是作为变量输入,为什么会得到不同的答案?:
>>>print(-2**(1/0.33))
-8.169812850522913
>>>x=-2
>>>print(x**(1/0.33))
(-8.132819305372337-0.7765900841063754j)
如果有人能解释如何获得第一个答案但使用第二种方法,我将非常感激
【问题讨论】:
【参考方案1】:由于operator precedence(**
的优先级高于一元-
),您的第一个表达式被计算为:
-(2**(1/0.33))
# -8.169812850522913
而在第二种情况下,由于您已经将 -2
定义为变量,因此它被评估为:
(-2)**(1/0.33)
# (-8.132819305372337-0.7765900841063753j)
这会导致一个复数。
【讨论】:
有点像,但不应该是“被评估为-(2**...)
”吗?此外,您可能会写“比 unary -
更高的优先级”,因为一元减号具有例如优先级高于乘法,但仍低于取幂。
我想这只是为了举例说明在@tobias_k 之后评估了否定因子(*(-1))
是的,这确实是@tobias_k 添加的重要细节【参考方案2】:
第一种情况,只有 2 有指数,第二种情况是'-2'。
(-2)**(1/0.33)
应该给出第二个结果
【讨论】:
以上是关于python中不一致的小数指数的主要内容,如果未能解决你的问题,请参考以下文章
为啥这个 jquery 和 css 在 html 表中不一致?