所谓取模运算,就是计算两个数相除之后的余数,符号是%。如a % b就是计算a除以b的余数。用数学语言来描述,就是如果存在整数n和m,其中0 <= m < b,使得$ a = n * b + m $,那么$ a \% b = a - n * b = m $。

先测试几个例子:

print(9%5) # 4

print(-9%5) # 1

print(9%-5) # -1

print(-9%-5) # -4

可以看到,数值部分虽然相同,但是正负符号的四种不同组合,会产生完全不同的四种结果。那么这里面有什么规律吗?

实际上,虽然结果不一样,不过取模运算完全遵从统一的规则:

其中$\lfloor\frac{a}{b}\rfloor$表示a除以b的结果向下取整。

比如$9\%5$,先计算$\lfloor\frac{9}{5}\rfloor$,向下取整得到1,然后计算$9-1*5$,得到4;

同理$-9\%5$,先计算$\lfloor\frac{-9}{5}\rfloor$,向下取整得到-2,然后计算$-9-(-2*5)$,得到1;

再来看$9\%-5$:

最后是$-9\%-5$:

虽然知道结果是如何计算出来的,不过人脑不比电脑,这样计算未免太复杂,为避免给大脑增加负担,再根据上面的规则,这里我总结了一个简单的记忆方法:

对于不带负号的,2个数字都是正数的,直接求结果,这个应该来说是比较简单的,而且无论符号是什么,我们都只计算这个值;

对于有负号的,不管负号在哪个数字,都去除负号,然后计算步骤1的结果;

接下来根据负号的位置分为3种情况,假设除数是K,去掉负号后取模的结果是M:2个数都是负数,直接等于-M

被除数是负数,除数是正数,由于是向下舍入,最后相当于会多加上一个K,也就是说模一定是大于0的,结果是K-M

被除数是正数,除数是负数,刚好相反,结果是M-K,注意这里的K是除数的绝对值,是正数

简单归纳:

不管有没有负数,先按正数求模得到M

2个数都为负数,结果是-M

只有1个数为负数,负数在上,记住结果一定是正的,大数-小数(除数-余数),那么就是K-M

只有1个数为负数,负数在下,记住结果一定是负的,小数-大数(余数-除数),那么就是M-K

注:此规律的前提是除的结果一定是向下取整,如果你用java去套这个规律会发现完全行不通。

python中模运算_Python中的模运算相关推荐

  1. python算法和数据结构_Python中的数据结构和算法

    python算法和数据结构 To 至 Leonardo da Vinci 达芬奇(Leonardo da Vinci) 介绍 (Introduction) The purpose of this ar ...

  2. python中定义数据结构_Python中的数据结构—简介

    python中定义数据结构 You have multiples algorithms, the steps of which require fetching the smallest value ...

  3. python取模运算_Python中的取模运算方法

    所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b的余数.用数学语言来描述,就是如果存在整数n和m,其中0 <= m < b,使得a = n * b + m ...

  4. python中mod运算符_Python中的取模运算方法

    所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b的余数.用数学语言来描述,就是如果存在整数n和m,其中0 <= m < b,使得a = n * b + m ...

  5. python中的数字类型格式与运算_Python中的数字类型格式与运算

    出品 Python中的数字(Digital)与数学中的数字相同,可以通过各种各样的运算符实现各种计算,在Python中数字类型的数据格式分为以下几种: 1.整数型(integer) 2.浮点数(flo ...

  6. python中怎么计算_python中的加减乘除运算

    python中的加减乘除运算,是学习python入门的基础,是以后进行数学计算的关键部分.包括运算表达式的写法,运算规则,加减乘除,求余,求商等等. 工具/原料 python 电脑 方法/步骤 1 1 ...

  7. python中的除法运算_python中矩阵除法运算的三种实现方法

    介绍过python矩阵的乘法运算,numpy库中虽然乘法是矩阵运算的主要运算,但是numpy作为python中实现矩阵运算的好工具,也是可以轻松实现除法计算的,本文python中矩阵除法的三种实现方法 ...

  8. python编写ATM类_Python中编写类的各种技巧和方法

    有关 Python 内编写类的各种技巧和方法(构建和初始化.重载操作符.类描述.属性访问控制.自定义序列.反射机制.可调用对象.上下文管理.构建描述符对象.Pickling).你可以把它当作一个教程, ...

  9. python整商运算符_python中的运算符

    一.python中的运算符主要分为 算数运算符.赋值运算符.比较运算符.逻辑运算符 1.算数运算符: 1)加减乘除 注意: (1)除法的结果是浮点数 (2)除法会遇到除不尽的情况 (3)被除数不能为0 ...

  10. python中定义字符串_Python中的字符串String

    Python中除了数字(Numbers)(int,float,complex)之外,另外一种重要的类型就是字符串. 字符串是字符序列,可以由任何字符构成. 在Python语言中,字符串可以放在单引号( ...

最新文章

  1. python使用matplotlib可视化跨年数值指标中位数变化率、使用pct_change函数计算变化率、年环比变化率(pct_change function)
  2. SuperMap 存量房交易网上备案及资金监管管理平台
  3. spring MVC配置详解
  4. 用数据库实现了一个分布式锁,虽简陋,但能用!
  5. StringBuffer和StringBuilder使用方法比較
  6. spring boot 服务器常用
  7. php 获取cookieid,Redis实现Session共享详解
  8. android view显示隐藏动画效果,Android 根据手势顶部View自动展示与隐藏效果
  9. java基础英语---第一天
  10. Android模块化之MicroModule(微信Pins工程) 1
  11. 学python可以从事什么工作-学完Python后可以从事哪些工作?
  12. 恩智浦智能车大赛----笔记
  13. Astah Professional三维图,网络上轻松上传图表
  14. k8s入坑之报错(4)报错:repomod.xml signature could not be verified
  15. mysql failover_MySQL 8.0.22 新特性Async Replication Auto failover
  16. 删除电脑上重复备份的图片
  17. kotlin android 开源,一款纯Kotlin编写的开源安卓应用 Smile
  18. 微信群如何实现只接收红包消息提醒
  19. 免费在线一键领取饿了么手气最佳红包方法
  20. poi操作word 2003/doc

热门文章

  1. 计算机教师个人能力不足,教师个人信息技术能力分析优势和不足.docx
  2. python 下载股票数据_利用python下载股票交易数据
  3. 关闭smartview 版本更新提示
  4. 怎么测试软件的自动升级,欧姆龙编程软件怎么升级 自动更新步骤详解
  5. canape数据导入matlab,CANape使用介绍
  6. 第六章 Realm及相关对象——《跟我学Shiro》[张开涛]
  7. java batik 字体文件_java – 当使用Batik的SVGGraphics2D时,如何设置font-family而不是font?...
  8. 极光im php,极光IM- IM 集成指南 - 极光文档
  9. 20科大考研经验分享-数学
  10. Tomcat的JDBC连接池