Python中的取模运算方法

所谓取模运算,就是计算两个数相除之后的余数,符号是%。如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

比如:

好了,上面是以前我对取模运算的认识,我记得<<C++ Primer>>上也是这么写的。但是,在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中的取模运算方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python算术运算符实例详解

    Python算术运算符 以下假设变量a为10,变量b为20: 运算符 描述 实例 + 加 - 两个对象相加 a + b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200 / 除 - x除以y b / a 输出结果 2 % 取模 - 返回除法的余数 b % a 输出结果 0 ** 幂 - 返回x的y次幂 a**b 输出结果 20 // 取整除 - 返回商的整数部分 9//2

  • Python中的数学运算操作符使用进阶

    Python中对象的行为是由它的类型 (Type) 决定的.所谓类型就是支持某些特定的操作.数字对象在任何编程语言中都是基础元素,支持加.减.乘.除等数学操作. Python的数字对象有整数和浮点数,支持各种数学操作,比如+, -,*, /等. 没有这些操作符,程序中只能使用函数调用的方式进行数学运算,比如add(2, 3), sub(5, 2). 程序中操作符的作用与普通数学操作的用法是一致的,使用中更加简便直观.Python中,这些操作符实现是通过定义一些object的特殊方法实现的,比如o

  • 实例说明Python中比较运算符的使用

    下表列出了所有Python语言支持的比较操作符.假设变量a持有10和变量b持有20,则: 例如: 试试下面的例子就明白了所有的Python编程语言提供的比较操作符: #!/usr/bin/python a = 21 b = 10 c = 0 if ( a == b ): print "Line 1 - a is equal to b" else: print "Line 1 - a is not equal to b" if ( a != b ): print &q

  • 详细介绍Python语言中的按位运算符

    按位运算符是把数字看作二进制来进行计算的.Python中的按位运算法则如下: 按位与   ( bitwise and of x and y ) &  举例: 5&3 = 1  解释: 101  11 相同位仅为个位1 ,故结果为 1 按位或   ( bitwise or of x and y ) |  举例: 5|3 = 7  解释: 101  11 出现1的位是 1 1 1,故结果为 111 按位异或 ( bitwise exclusive or of x and y ) ^  举例:

  • 总结Python中逻辑运算符的使用

    下表列出了所有Python语言支持的逻辑运算符.假设变量a持有10和变量b持有20,则: 示例: 试试下面的例子就明白了所有的Python编程语言提供了逻辑运算符: #!/usr/bin/python a = 10 b = 20 c = 0 if ( a and b ): print "Line 1 - a and b are true" else: print "Line 1 - Either a is not true or b is not true" if

  • Python中实现三目运算的方法

    C语言中三目运算符 复制代码 代码如下: expression ?expr1:expr2;  //expression 为真则取表达式expr1的值,否则取expr2的值 python三目实现方法: (1) expr=判断表达式 and expr1 or expr2 判断表达式为真,此时如果expr1为真则expr=expr1,为假则变成False or expr2,expr=expr2. 判断表达式为假,则演变成False or expr2,此时expr=expr2. 只要表达式expr1,e

  • Python中的取模运算方法

    所谓取模运算,就是计算两个数相除之后的余数,符号是%.如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 比如: 好了,

  • Java%(取模运算)全面讲解

    目录 Java%(取模运算) Java的取模运算 C++的取模运算 注意事项:奇偶判断 编程语言中的%取模运算的本质探究 公式:a % b = a - a / b * b(对于a为正数) 公式:a - (int)a / b * b Java%(取模运算) Java的取模运算 1.实现算法 public static double ramainder(double dividend, double dividor) {         return dividend - dividend / di

  • Python中的取整、取余运算方法

    目录 1.取整运算 2.取余运算 Python 几种取整的方法 1.向下取整 2.四舍五入 3.向上取整 4.分别取整数部分和小数部分 1.取整运算 在Python中取整运算的运算符为//,且取整运算的取整为向下取整,不进行四舍五入例:9//4=2,即9对4取整等于2-9//-4=2,因为-9÷-4=2.25,取整为2那么问题来了,9//-4等于多少呢?9//-4=-3,因为9÷-4应该等于-2.25,那么对-2.25向下取整,应该为-3,而不是-2,所以9//-4=-3那么-9//4呢?-9÷

  • python 负数取模运算实例

    举例: 340%60 = 40 ,怎么来的? 340 - 60*5 = 40 340 - (比340小的那个可以被60整除的正整数) =. 40 如果是负数: -340%60 = -340 - (比-340小的那个可以被60整除的负整数) = -340 - (-360) = 20 如图: 也可以换个思路想, -340%60 =(比340大的那个可以被60整除的正整数) - 340 = 360 - 340 = 20 举例: 1%3 = 1 -1%3 = 2 补充知识:python中对负数求余的计算

  • JS取模、取商及取整运算方法示例

    本文实例讲述了JS取模.取商及取整运算方法.分享给大家供大家参考,具体如下: JS代码: //求余数 document.write(1%4); document.write(6%4); //求商 console.info(1/4); console.info(6/4); //求商,取整 console.info(parseInt(1/4)); console.info(parseInt(6/4)); console.info('----'); //天花板取整 console.info(Math.

  • 在python带权重的列表中随机取值的方法

    1 random.choice python random模块的choice方法随机选择某个元素 foo = ['a', 'b', 'c', 'd', 'e'] from random import choice print choice(foo) 2 random.sample 使用python random模块的sample函数从列表中随机选择一组元素 list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice = random.sample(list, 5)

  • python 从list中随机取值的方法

    第一种方法(推荐) 适用于随机取一个值, 返回一个值 import random list1 = ['佛山', '南宁', '北海', '杭州', '南昌', '厦门', '温州'] a = random.choice(list1) print(a) # 返回一个值 第二种方法 适用于随机取一组值, 返回一个list import random list1 = ['佛山', '南宁', '北海', '杭州', '南昌', '厦门', '温州'] # 随机返回只有一个值的list a = rand

  • python中返回矩阵的行列方法

    实例如下所示: # TODO 返回矩阵的行数和列数 def shape(M): return len(M),len(M[0]) 以上这篇python中返回矩阵的行列方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: Python numpy 提取矩阵的某一行或某一列的实例 Python矩阵常见运算操作实例总结 Python表示矩阵的方法分析 Python获取二维矩阵每列最大值的方法 Python实现矩阵转置的方法分析 matlab中实现矩阵删

  • 对python dataframe逻辑取值的方法详解

    我遇到的一个小需求,就是希望通过判断pandas dataframe中一列的值在两个条件范围(比如下面代码中所描述的逻辑,取小于u-3ε和大于u+3ε的值),然后取出dataframe中的所有符合条件的值,这个需求的解决与普通的iloc.loc.ix的方式不同,所以我想分享一下,希望可以帮到遇到这个困难的朋友们,下面是我的实例代码: doc[~((doc.iloc[:,141:142]<(mean_value-3*std_value))&(doc.iloc[:,141:142]>(me

  • C++使用string的大数取模运算(5)

    本次项目目标:使用C++完成对于大数的相关运算,具体有加减乘除取模. 项目要点 1.大数指的是远超long long int的数据 2.将大数用矩阵进行存储,并通过矩阵实现运算 3.本人采用字符串进行存储,应注意char的特点 比如:char a=161: cout<<(int)a; 此时会输出-95,而不是161,char类型首个比特位是作为正负号的 取模运算其实和取余差不多,主要是取模在负数方面与取余不同 需要用到之前博客提到的减法运算minus 核心思想: 先来看自然数的取模运算 与取余

随机推荐