网站地图 联系我们

学习python首选-实战python学习班,专注于python高级工程师培养,python课程:包括Python核心编程技术、全栈开发、网络爬虫、人工智能等。python全栈工程师+提高工作经验,获取免费试听课程!
当前位置: python培训 > python学习 > 常见问题 > 正文

《python核心编程》复数取余的问题

来源:肚皮舞 浏览量: 发布日期:20-08-27 10:55:43 调整字体大小【 【所属栏目:常见问题】

  在看《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对于两个复数之间的取余运算是怎么进行的?

  谢谢了~

  复数取余就是按照公式计算得出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.

标签:
肚皮舞新闻动态News Center

肚皮舞视频

肚皮舞培训课程

联系卡伊丝contact us
联系我们
python培训「零基础入门到精通」python人工智能编程培训班-0798wz.com

咨询热线:18301225663