您好,匿名用户
随意问技术百科期待您的加入

python 复数取余是怎么实现的

0 投票

在看《python核心编程》的时候,取余运算符% 。
x%y
书中先介绍的是浮点数的取余运算:即
“商取小于等于精确值的最大整数的乘积之差. 即: x - (math.floor(x/y) * y) ”
这个没问题,可以理解,可是接下来说复数的内容是:
“对于复数,取余的定义类似于浮点数,不同之处在于商仅取其实数部分,即:
x - (math.floor((x/y).real) * y)。 ”
这个就不太理解了。我亲自写了几个取余的运算看了一下:

>> (4+2j)%(2+2j)

(2+0j)

>> (6+2j)%(2+2j)

(2-2j)

>> (1.2+2j)%(0.2+2j)

(1+0j)

>> (1.2+2j)%(0.2+1j)

(0.7999999999999999+0j)

>> (1.2+7j)%(0.2+2j)

(0.5999999999999999+1j)
看不出来其中的运算方法,恳请各位帮助解答:python对于两个复数之间的取余运算是怎么进行的?
谢谢了~

用户头像 提问 2013年 10月25日 @ Shen 上等兵 (318 威望)
分享到:

1个回答

0 投票
 
最佳答案

复数取余就是按照公式计算得出x - (math.floor((x/y).real) * y)

(4+2j)%(2+2j)

1.x = (4+2j) y = (2+2j)
如果直接只需要计算x/y那么结果是(1.5-0.5j),然后因为公式对实部地板取整math.floor(1.5)=1
2.按照公式

(math.floor((x/y).real) * y)

=> math.floor(1.5)*y => 1*(2+2j)
3.最后

x-(math.floor((x/y).real) * y)

实际就是4+2j-1*(2+2j)得到结果2+0j

注:
math.floor(x)
Return the floor of x as a float, the largest integer value less than or equal to x.

用户头像 回复 2013年 10月25日 @ Viktor 上等兵 (290 威望)
选中 2013年 9月7日 @Shen
提一个问题:

相关问题

0 投票
1 回复 31 阅读
用户头像 提问 2013年 11月1日 @ Tryndamere 上等兵 (325 威望)
0 投票
1 回复 36 阅读
用户头像 提问 2012年 12月1日 @ Zeus 上等兵 (193 威望)
0 投票
0 回复 155 阅读
用户头像 提问 2012年 12月1日 @ Hera 上等兵 (249 威望)
0 投票
1 回复 29 阅读
+1 投票
1 回复 45 阅读
用户头像 提问 2012年 12月1日 @ Sivir 上等兵 (275 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...