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中argsort()函数的实例用法
Mar 30 Python
Python3 Random模块代码详解
Dec 04 Python
Python排序搜索基本算法之插入排序实例分析
Dec 11 Python
使用numpy和PIL进行简单的图像处理方法
Jul 02 Python
pandas使用get_dummies进行one-hot编码的方法
Jul 10 Python
解决python3捕获cx_oracle抛出的异常错误问题
Oct 18 Python
Python3.5集合及其常见运算实例详解
May 01 Python
Python通过Manager方式实现多个无关联进程共享数据的实现
Nov 07 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
Python自动重新加载模块详解(autoreload module)
Apr 01 Python
Python虚拟环境venv用法详解
May 25 Python
python函数的两种嵌套方法使用
Apr 02 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
php 中include()与require()的对比
2006/10/09 PHP
ThinkPHP文件上传实例教程
2014/08/22 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
php获取根域名方法汇总
2014/10/28 PHP
9个实用的PHP代码片段分享
2015/01/22 PHP
实例讲解php数据访问
2016/05/09 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
JS DOM 操作实现代码
2010/08/01 Javascript
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
nodejs提示:cross-device link not permitted, rename错误的解决方法
2019/06/10 NodeJs
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
Python中的exec、eval使用实例
2014/09/23 Python
Djang中静态文件配置方法
2015/07/30 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
Python输入二维数组方法
2018/04/13 Python
详解python中__name__的意义以及作用
2019/08/07 Python
jupyter notebook清除输出方式
2020/04/10 Python
装上这 14 个插件后,PyCharm 真的是无敌的存在
2021/01/11 Python
试用期员工工作自我评价
2014/09/10 职场文书
国庆节标语大全
2014/10/08 职场文书
个人年底工作总结
2015/03/10 职场文书
2015年护士节慰问信
2015/03/23 职场文书
军训后的感想
2015/08/07 职场文书
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
2021/05/14 Python
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis