起步

应该很少人遇到或者注意到,Python 在某些情况取模会不一样。

10 % -3,python 和 js 出来的结果不一样。我试着更多语言的结果,包括php和c在内的结果都是 1:

Python 得到的结果与其他语言不一样,所以 Python 是错的?然而,这个结果当然是 Python 有意为之,所以我更愿意把它归类到 python 坑里去,Python 对于异号除法的处理和大多流行的语言不一样。

除法取整

要了解 Python 取模为什么这么奇怪还得先从除法取整说起。除法的取整可以分为两类:向下取整和向零取整。向下取整:向 -∞ 方向取最接近精确值的整数,即取商的 floor(x) ,称为取底除法。Python 采用这种方式。

向零取整:向0方向取最接近精确值的整数,即舍弃小数部分,称为截断除法。C,php,js,java 采用这种方式。很多取模的实现都使用了截断除法,此时商由截断函数定义定义 q = trunc(a/n),因此由等式 1 有,余数和被除数符号一致。商向零取整:结果等于普通除法所得的小数靠近 0 方向的第一个整数。

高德纳[7]定义的取底除法的商由取底函数定义:q = ⌊a/n⌋。

因此,对于Python来说, 10 ÷ -3 = -3.33333 ,向下取整就得到 -4。所以余数就是 -2 了。逆运算,商 x 除数 + 余数 也能等于10。

总结

其实,对于除数的取整具体还是看编译器如何处理的,并没有统一的标准。C90 ,当除数 a 和除数 n 都是负数时,C90 标准并没有做具体的规定; C99才正式确定了趋零截尾。

python 取模是什么意思_Python 中负数取模问题相关推荐

  1. Python基础_第3章_Python中的循环结构

    Python基础_第3章_Python中的循环结构 文章目录 Python基础_第3章_Python中的循环结构 Python中的循环结构 一.回顾分支练习题 1.判断是否为一个合法三角形 2.求世界 ...

  2. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  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中的字符串模运算符与format函数

    如果你在网上搜索Python中如何进行字符串插值(string interpolation),那么你很可能会发现一些留言和旧文档中说字符串模运算符(%)以后会被废弃,并移除出标准库.但是这完全是杞人忧 ...

  6. python跑一亿次循环_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  7. python 获取用户的一个输入值_Python中,用于获取用户输入的命令为:

    [多选题]以下关于机器学习说法正确的是? [判断题]Python内置函数sum____用来返回数值型序列中所有元素之和. [单选题]关于自定义函数的下列说法不正确的是: [判断题]Python内置函数 ...

  8. python选取元音开头的单词_Python中的Regex,用于查找遵循以下模式的单词:元音、辅音、元音、辅音...

    如果将辅音有向图映射成单个辅音,则最长的单词是解剖病理学的10*VC字符串. 如果您正确映射y,那么您将得到完整的字符串,如乙酰丙酮作为8*VC,下胚轴作为8*CV. 如果不需要字符串是完整的,那么在 ...

  9. 计算机中负数取余和数学上的取余

    数学定义上的取余:(余数必须大于0) 如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足a=qd+r且0 ≤ r < d(其中q为商,r为余数). 举例: 5%3=3x ...

最新文章

  1. [蓝桥杯]PREV-23.历届试题_数字游戏
  2. creo 3.0计算机配置,Creo 3.0 Parametric 配置选项文件使用说明
  3. error LNK1112错误: 模块计算机类型“x64”与目标计算机类型“X86”冲突
  4. zabbix代理服务器搭建
  5. 无招胜有招之Java进阶JVM(一)
  6. ASP.NET跨页面传值技巧总结【转】
  7. mysql语法学习(一)__Instances__表
  8. Golang面试题解析(五)
  9. HDU 5045 状压DP 上海网赛
  10. IOPS和Throughput
  11. 《剑指offer》Java版全系列题解(2021版,持续更新!)
  12. 3dmax软件怎么贴图
  13. 汽车总线LIN总线协议
  14. jar文件怎么打开 查看jar文件内容操作方法
  15. MSTAR数据集处理
  16. 寻找http://localhost/phpmyadmin出现的问题:HTTP 错误 404.0 - Not Found 您要找的资源已被删除、已更名或暂时不可用
  17. OpenPose 运行指令 (Version@1.7)
  18. Qt经典蓝牙系列四(经典蓝牙客户端的设计 纯Qt代码) android/windows10
  19. 【Linux学习】信号——信号保存 | 信号处理 | 不可重入函数,volatile,SIGCHLD信号
  20. mysql中文拼音排序

热门文章

  1. 教育小程序源码包含哪些功能?
  2. 计算机科学与技术考研难度排行,考研专业的难度排名
  3. Unity内置资源如何打包避免冗余
  4. java开发之消除冗余代码的3种方法
  5. 《Python爬虫100例》复盘⑦,解决手机APP爬虫环境问题
  6. IDEA中代码编辑器中字体修改
  7. C语言qsort()函数针对:整型、单个字符、字符串、结构体,超详细讲解(多维度分析举例,小白一看就懂!!!!!)
  8. 【高等数学】—基础求导公式、等价无穷小转换公式
  9. 修改linux屏幕大小,在Linux Mint上更改屏幕分辨率
  10. ehviewer_ehviewer下载预约_ehviewer免登陆版最新v1.0.30下载预约去广告清爽版_游戏吧...