最近在编码的过程中,在整除以及取余的时候遇到了一些比较迷的问题,这里码一下这些问题,以备日后查看。

在Python3中,除法有 “/” 以及 “//” 两种,这两个有着明显的区别,具体区别看代码:

print(12//10)
print(12/10)

这两行代码的输出如下:

1
1.2

这结果的差别显而易见。当被除数是负数的时候又是令一种情况:

print(-12/10)
print(int(-12/10))
print(-13//10)

这三条语句的输出为:

-1.2
-1
-2

这里面就可以发现-13用 “//” 除以10的时候,结果是-2,从结果中我们可以看出,“//”是向下取整,“-1.3”会被取成-2,如果想要得到-1,就需要用“/”,然后将结果强制转换为int型。

再讲到取余操作,比除法操作更为复杂。

正数的取余比较直接:

print(123%10)

这里结果为3。

但是换为负数取余,情况就有所不同:

print(-123%10)
print(-123%-10)
7
-3

这里面第二条是我们一般意义上的取余操作。这里也特别标注一下,如果涉及到负数取余要用上述解决办法。

那么我们看第一条,结果等于7。这个结果有点让人摸不到头脑,不过这个结果与Python的底层机制有关。

在Python中,取余的计算公式与别的语言并没有什么区别:r=a-n*[a//n]

这里r是余数,a是被除数,n是除数。

不过在“a//n”这一步,当a是负数的时候,我们上面说了,会向下取整,也就是说向负无穷方向取整。这也就得到:

-123%10 = -123 - 10 * (-123 // 10) = -123 - 10 * (-13) = 7

这里还不得不提的是

print(123%-10)

这个情况,结果为:

-7

这个通过公式我们也能清楚地计算出来。

下面列一下各种情况的一个总结:

print(18//10)
print(12/10)
print(-12/10)
print(12/-10)
print(12//-10)
print(int(-12/10))
print(-13//10)
print(int(-123 % -10))
print(-123%10)
print(-123%-10)
print(123%10)
print(-123 // 10)
print(123%-10)
1
1.2
-1.2
-1.2
-2
-1
-2
-3
7
-3
3
-13
-7

Python 关于整除以及负数取余遇到的问题相关推荐

  1. Python中的负数取余问题

    12 % 5, -12 % 5 # output # (2, 3) 在数学里,"负数取余"遵循的是: 如果 a 与 d 是整数,d 非零,那么余数 r 满足 a = q * d + ...

  2. Python负数取余总结

    Python负数取余总结 余数存在正余数和负余数,要了解负余数,需要先了解取整原理 17 // 5 = 3 -17//5 = -4 17//-5 = -4 -17//-5 = 3 根据上述的4个公式, ...

  3. python正负数取余说明

    符号: / :除法运算,返回值不是int类型 //:除法运算,向下取整 %:取余 举例: print(12 // 10) # 输出1,取整print(12 / 10) # 输出1.2# 当被除数为负数 ...

  4. 负数对2取余_不同语言的负数取余问题

    不同语言的负数取余问题 问题的出现 偶然在leetcode上看到一道这样的题: Given a 32-bit signed integer, reverse digits of an integer. ...

  5. 【C语言】深度理解 负数取余 取模

    C语言深度理解 负数取余 取模 关于取余和取模的问题 定义 取余时有负数怎么计算? 取余和取模的区别 取余和取模时候等价什么时候不等价 总结 关于取余和取模的问题 许多小伙伴在刚开始学C语言的时候,知 ...

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

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

  7. python负数取余 整除运算

    这部分容易出一些误区 整除运算 1. 正数整除负数 10 // -3 -4 总结:(分割法)10被3分隔成4份,所以结果为-4 2. 负数整除正数 -10 // 3 -4 总结:(分割法)10被3分隔 ...

  8. python中负数取余和取整

    网上看到好多总结python取余取整的,基本都是根据现象来人为解释,都没有说清楚根本原因,其实就是很简单的数学思路. 首先取整比较好理解,就是向下取整,2.3取2,-2.3取-3: 取余其实是根据取整 ...

  9. python 负数取余

    取余公式r=a-n*[a//n] 这里r是余数,a是被除数,n是除数. 不过在"a//n"这一步,当a是负数的时候,会向下取整,也就是说向负无穷方向取整.这也就得到: -134 % ...

最新文章

  1. Leangoo看板工具可以很好的管理我们的销售
  2. 定义一个Address 类(java)
  3. Laravel 文件夹结构简介
  4. Kotlin代码检查在美团的探索与实践
  5. autohotkey实例+懒人包_懒人福音——GitHub 热点速览 Vol.42
  6. Linux常见问题解答--如何修复“tar:Exiting with failure status due to previous errors”
  7. 阿里云产品经理吴华剑:SLS 的产品功能与发展历程
  8. cad.net 在cad2008引用了错误的com接口的dll导致出现了
  9. javafx弹出二级stage窗口时虚化主窗口
  10. mysql时间函数now()_获得当前日期时间的mysql函数now()
  11. 海康sdk远程门禁_海康威视远程监控Android端SDK调用示例
  12. J2EE是什么,主要包括哪些技术
  13. 软件项目中得风险应对策略
  14. Invalid or unexpected token 报错
  15. CSRF与钓鱼链接攻击
  16. 大数据产业链结构_大数据产业链包含那几个应用环节?
  17. 字节跳动后端面经(17)
  18. RNA-seq 详细教程:假设检验和多重检验(8)
  19. 【Mybatis】Mybatis将String类型的0存到数据库中的number类型字段中,变成了空;
  20. adb 命令获取安卓设备IMEI码

热门文章

  1. 在阿里云 ACK 上部署 EMQX MQTT 服务器集群
  2. 5000字长文:电商运营如何做好数据分析?
  3. TreeView相关
  4. php GD库做水印功能,合并图片
  5. (四十二)模态框的使用
  6. (平衡)kd树的创建与搜索
  7. 基于MFC的OpenDDS发布订阅例子(PubSubDemo)
  8. 一个命令行整理软著代码
  9. u8系统清理异常咋进服务器,用友u8怎么清除异常
  10. 同步与异步通信的区别