pow 运算符计算错误
- 2025-03-04 08:27:00
- admin 原创
- 78
问题描述:
应该返回什么print (-2 ** 2)
?根据我的计算应该是4
,但解释器返回-4
。
这是 Python 的问题还是我的数学太差?
解决方案 1:
根据文档,**
优先级高于-
,因此您的代码相当于-(2 ** 2)
。要获得所需结果,您可以-2
将
>>> (-2) ** 2
4
或使用内置pow
函数
>>> pow(-2, 2)
4
或math.pow
函数(返回float
值)
>>> import math
>>> math.pow(-2, 2)
4.0
解决方案 2:
该**
操作在减法之前完成。要获得预期的结果,您应该执行
print ((-2) ** 2)
来自文档:
因此,在无括号的幂运算符和一元运算符序列中,运算符从右到左进行求值(这不限制操作数的求值顺序):
-1**2
结果为-1
。
文档中还提供了运算符优先级的完整详细信息。您可以看到最后一行(expr)
强制在使用前对 expr 进行求值,因此结果是(-2) ** 2 = 4
解决方案 3:
您还可以使用数学库......
math.pow(-2,2) --> 4
-math.pow(2,2) --> -4
math.pow(4,0.5) --> 2
解决方案 4:
Python 有问题,无法将 -2 视为数字。这似乎是设计使然,文档中提到了这一点。
-2 解释为 -(2) {一元减去正数 2}
这通常不会产生问题,但是在 -a 2 中, 具有更高的优先级,因为 - 因此将 - 解释为一元运算符而不是数字的一部分 -2 ** 2 的计算结果为 -2 而不是 2。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD