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中不一致的小数指数的主要内容,如果未能解决你的问题,请参考以下文章

python投票一致性指数(IVC)实现代码

为啥这个 jquery 和 css 在 html 表中不一致?

通过代理读取器加载的存储中不一致的数据损坏

text 缩进中不一致使用制表符和空格

如何绕过 ICS 和 Jellybean 中不一致的 DatePicker 小部件

网页中金额小数点后面和前面字体大小不一致的实现