Python中的取模运算方法


Posted in Python onNovember 10, 2018

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

取模运算的两个操作数都必须是整数,可以是负整数,但是b不可以是0,因为被除数不能为0嘛。

当a和b中存在负整数时,首先计算|a|%|b|=c,然后a%b的符号与b一致。也就是说,如果b>0,则a%b=c;如果b<0,则a%b=-c

比如:

Python中的取模运算方法

好了,上面是以前我对取模运算的认识,我记得<<C++ Primer>>上也是这么写的。但是,在Python中,我随便输入了一个浮点数进行取模运算,竟然也是可以的,惊呆了==

Python中的取模运算方法

不过呢,仔细观察就会发现,不知道它是怎么计算的啊!怎么办呢,我们首先来看看,浮点数的取模在数学上要怎么定义呢?

浮点数取模的数学定义:对于两个浮点数a和b,a % b = a - n * b,其中n为不超过a / b的最大整数。

例如,

3.5 / 2 = 1.75,取n = 1,则3.5 % 2 = 3.5 - 1 * 2 = 1.5

-3.5 / 2 = -1.75,取n = -2,则-3.5 % 2 = -3.5 - (-2) * 2 = 0.5

3.5 / -2.5 = -1.4,取n = -2,则3.5 % -2.5 = 3.5 - (-2) * (-2.5) = -1.5

另外,C++中有一个函数fmod可以用来计算浮点数的取模。

总结:

取模运算的两个操作数a和b可以是整数,也可以是浮点数;可以是正数,零(b不能为0),也可以是负数。不管是整数还是浮点数,是正数还是负数还是零,只需要抓住取模的数学定义即可。统一的数学定义如下:

对于两个数a和b(b不为0),a % b = a - n * b,其中n为不超过a / b的最大整数(这里的除就是正常的除,不是整除)。

需要注意的是,整数的取模运算的定义和浮点数的是一样的,所以计算方法也是一样的。最前面提供的整数取模的方法,其实本质上跟浮点数取模的方法是一致的,只不过这种方法可能在含有负整数的整数取模中比较方便而已。

以上这篇Python中的取模运算方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python读取键盘输入的2种方法
Jun 16 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
利用Python实现颜色色值转换的小工具
Oct 27 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
Python信息抽取之乱码解决办法
Jun 29 Python
python实现手机通讯录搜索功能
Feb 22 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
Python文件读写常见用法总结
Feb 22 Python
django fernet fields字段加密实践详解
Aug 12 Python
python 将列表里的字典元素合并为一个字典实例
Sep 01 Python
python 调整图片亮度的示例
Dec 03 Python
在Python中获取两数相除的商和余数方法
Nov 10 #Python
Python解决两个整数相除只得到整数部分的实例
Nov 10 #Python
从DataFrame中提取出Series或DataFrame对象的方法
Nov 10 #Python
pandas 数据归一化以及行删除例程的方法
Nov 10 #Python
python 重命名轴索引的方法
Nov 10 #Python
Pandas:Series和DataFrame删除指定轴上数据的方法
Nov 10 #Python
Pandas DataFrame 取一行数据会得到Series的方法
Nov 10 #Python
You might like
zf框架的Filter过滤器使用示例
2014/03/13 PHP
php实现的数字验证码及数字运算验证码
2015/07/30 PHP
CI框架中redis缓存相关操作文件示例代码
2016/05/17 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
JavaScript高级程序设计 读书笔记之十 本地对象Date日期
2012/02/27 Javascript
13 个JavaScript 性能提升技巧分享
2012/07/26 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
jQuery实现动态添加tr到table的方法
2016/12/26 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
socket.io学习教程之深入学习篇(三)
2017/04/29 Javascript
限时抢购-倒计时的完整实例(分享)
2017/09/17 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
微信小程序仿知乎实现评论留言功能
2018/11/28 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
Vue学习之组件用法实例详解
2020/01/06 Javascript
vue滑动吸顶及锚点定位的示例代码
2020/05/10 Javascript
vue中element 的upload组件发送请求给后端操作
2020/09/07 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
Python实现PyPDF2处理PDF文件的方法示例
2019/09/25 Python
python实现邮件循环自动发件功能
2020/09/11 Python
Python实现钉钉/企业微信自动打卡的示例代码
2021/02/02 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
欧舒丹比利时官网:L’OCCITANE比利时
2017/04/25 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
教师自我鉴定
2013/12/13 职场文书
创业计划书的主要内容有哪些
2014/01/29 职场文书
商务宴会祝酒词
2015/08/11 职场文书
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis