鱼C论坛

 找回密码
 立即注册
查看: 2411|回复: 3

[已解决]还是关于幂运算

[复制链接]
发表于 2023-3-22 10:58:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lzb1001 于 2023-3-22 11:01 编辑

小甲鱼教材里说:幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低


1、如果两边都有一元操作符呢?比如:

>>> -3 ** -2
-0.1111111111111111


>>> (-3) ** (-2)
0.1111111111111111


2、为何后者加了括号后两种计算结果不同?如何理解?
最佳答案
2023-3-22 11:05:39
本帖最后由 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。

总之,括号的作用是改变了操作符的优先级,使得一元负号先于幂运算操作符生效。

这就是为什么两种表达式的计算结果不同的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-22 11:05:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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。

总之,括号的作用是改变了操作符的优先级,使得一元负号先于幂运算操作符生效。

这就是为什么两种表达式的计算结果不同的原因。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-22 11:59:53 | 显示全部楼层
isdkz 发表于 2023-3-22 11:05
1、在 Python 中,幂运算操作符(**)的优先级确实高于左侧的一元操作符(例如,一元负号 -),但低于右侧 ...

(-3) ** (-2) 的结果,居然等于 3 ** (-2) 的结果

实在难以理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-22 12:03:11 | 显示全部楼层
lzb1001 发表于 2023-3-22 11:59
(-3) ** (-2) 的结果,居然等于 3 ** (-2) 的结果

实在难以理解

有什么难以理解的,(-3) ** (-2) = 1 / ((-3) ** 2)

绝对值相同的负数和正数的平方数相同这不很正常吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表