2024-04-24 14:03:04 发布
网友
面对一个奇怪的问题python操作员.pow返回的值与**
import operator pow(-5,0.333) >> (0.856078889075021+1.4791926873843961j) -5**0.333 >> -1.709058826000847
我错过了什么?我需要它说-1.709而不是复数来处理我的代码结构的其余部分。你知道吗
在Python中,幂运算符**绑定得比左边的一元运算符更紧密;它绑定得比右边的一元运算符更紧密(参见docs)。你知道吗
**
因此pow(-5, 0.333)的正确等价是(-5)**0.333。正确的等价于-5**0.333是-pow(5, 0.333)。你知道吗
pow(-5, 0.333)
(-5)**0.333
-5**0.333
-pow(5, 0.333)
您可以使用抽象语法树解析/转储来验证运算符优先级:
>>> import ast >>> ast.dump(ast.parse("-5**0.333"), annotate_fields=False) 'Module([Expr(UnaryOp(USub(), BinOp(Num(5), Pow(), Num(0.333))))])' >>> astdump.indented("-5**0.333") # pip install astdump Module Expr UnaryOp USub BinOp Num Pow Num
在Python中,幂运算符
**
绑定得比左边的一元运算符更紧密;它绑定得比右边的一元运算符更紧密(参见docs)。你知道吗因此
pow(-5, 0.333)
的正确等价是(-5)**0.333
。正确的等价于-5**0.333
是-pow(5, 0.333)
。你知道吗您可以使用抽象语法树解析/转储来验证运算符优先级:
相关问题 更多 >
编程相关推荐