还是关于幂运算
本帖最后由 lzb1001 于 2023-3-22 11:01 编辑小甲鱼教材里说:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低
1、如果两边都有一元操作符呢?比如:
>>> -3 ** -2
-0.1111111111111111
>>> (-3) ** (-2)
0.1111111111111111
2、为何后者加了括号后两种计算结果不同?如何理解? 本帖最后由 isdkz 于 2023-3-22 11:11 编辑
1、在 Python 中,幂运算操作符(**)的优先级确实高于左侧的一元操作符(例如,一元负号 -),但低于右侧的一元操作符。
所以,当你编写表达式 -3 ** -2 时,实际上会按照以下顺序计算:
首先计算 3 ** -2,结果为 0.1111111111111111;
然后,将一元负号应用于这个结果,即 -0.1111111111111111。
2、当你在后者的表达式中加上括号时,实际上你改变了计算顺序。在这种情况下,(-3) ** (-2) 的计算过程如下:
首先,应用一元负号,将 3 转换为 -3。这里括号其实并没有实质性的影响,只是为了强调负号是应用在整数 3 上的;
然后,计算 (-3) ** (-2),结果为 0.1111111111111111。
总之,括号的作用是改变了操作符的优先级,使得一元负号先于幂运算操作符生效。
这就是为什么两种表达式的计算结果不同的原因。 isdkz 发表于 2023-3-22 11:05
1、在 Python 中,幂运算操作符(**)的优先级确实高于左侧的一元操作符(例如,一元负号 -),但低于右侧 ...
(-3) ** (-2) 的结果,居然等于 3 ** (-2) 的结果
实在难以理解 lzb1001 发表于 2023-3-22 11:59
(-3) ** (-2) 的结果,居然等于 3 ** (-2) 的结果
实在难以理解
有什么难以理解的,(-3) ** (-2) = 1 / ((-3) ** 2)
绝对值相同的负数和正数的平方数相同这不很正常吗?
页:
[1]