首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复数的运算符优先

复数的运算符优先
EN

Stack Overflow用户
提问于 2013-04-19 18:36:43
回答 3查看 142关注 0票数 1

这应该是不言自明的

代码语言:javascript
复制
>>> (1+2j).real  #Normal Usage
1.0
>>> (1+2j).imag  #Normal Usage
2.0
>>> 1+2j.real  #Normal Usage
1.0
>>> 1+2j.imag  #Flips Out
3.0
>>> 123+657j.real
123.0
>>> 123+657j.imag
780.0

z.imag以某种方式将实部和虚部相加。

我发现这很有趣..。这是一个bug,还是有意为之的特性?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-19 18:38:37

问题是1+2j.imag被解析为1+(2j.imag)。显然,2j.imag2.0,所以1+2j返回3.0。当您执行1+2j.real时,Python会添加12j.real2j.real0.0,所以返回的是正确答案1.0

如果将复数括起来,就像前两个示例一样,就会得到预期的结果。

票数 6
EN

Stack Overflow用户

发布于 2013-04-19 18:39:48

这是一个运算符优先级问题。.+具有更高的优先级,因此您可以有效地执行以下操作

代码语言:javascript
复制
1+(2j.imag)

当然是3。

这是一个非常好的想法,™总是用圆括号括起复数文字。

票数 3
EN

Stack Overflow用户

发布于 2013-04-19 18:39:30

这并不疯狂,真的。事情是这样发生的:'.‘运算符的优先级高于+,仅此而已。这意味着

代码语言:javascript
复制
>>> 1+2j.imag

计算结果为1+ (2j.imag),即1+2,即为3。这对其他示例也是有效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16102695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档