python - Python中的指数运算符 - 使用变量和使用直接值给出不同的结果
问题描述
我们使用如下指数运算符为变量赋值:
>>> a = -1.5
>>> b = 0.44
>>> c = (a ** b)
>>> c
(0.22397855343551604+1.1741366953411416j)
如果我们在指数运算符中使用直接值,结果会有所不同:
>>> d = (-1.5 ** 0.44)
>>> d
-1.195308902228074
我们需要使用变量的第二个输出。
解决方案
问题是它-
的优先级低于**
,因此表达式-1.5 ** 0.44
实际上被解析为-(1.5 ** 0.44)
。
为了得到正确的结果,你应该写(-1.5) ** 0.44
.
>>> -1.5 ** 0.44
-1.195308902228074
>>> -(1.5 ** 0.44)
-1.195308902228074
>>> (-1.5) ** 0.44
(0.22397855343551604+1.1741366953411416j)
结果-1.195308902228074
在数学上实际上是不正确的,但是如果您在将数字分配给变量后确实想要不正确abs
的结果,那么您可以使用and math.copysign
:
>>> a = -1.5
>>> b = 0.44
>>> import math
>>> math.copysign(abs(a) ** b, a)
-1.195308902228074
推荐阅读
- javascript - 如何使用带有垂直缩略图的轮播
- javascript - 我需要什么逻辑才能使这个地图问题成为一个很好的测试?
- hibernate - 无法使用 Hibernate 连接到 RDS
- javascript-automation - JXA 中有关 Application.launch() 的文档?
- angular - Angular:创建组件后更改firebase路径
- javascript - 从键/值对字符串设置环境变量
- c# - 有没有更好的方法来编写这个 Duplicate ID Checker?
- redux - bindActionCreators 和 mapDispatchToProps - 我需要它们吗?
- javascript - API 耗时过长,地图函数在数据加载之前触发
- powerbi - 如何让 exceptAll 忽略切片器?