先来看一段代码

这是什么情况?为什么会出现这种结果。我们再来看看其它语言的执行结果

我们用golang、js、c分别算了一下,结果得到的结果都是一致的,但是python为啥不一样呢?

其实之所以这么做是python有意而为之,因为python对于正负号不同的两个值的除法处理方式和其它流行语言不一样。这就要考虑到机器是如何计算商和余数的,以10 % 3为例,先算10 / 3 = 3.333,然后取整得到3,也就是商,然后10 - 3 * 3=1,因此对于两个正数相除是没有疑问的,一样的结果。

但是如果是负数相除就不一样了,python是向下取整,而golang、c、js等语言则是直接把小数点后面截断,然后得到商。比如:10 % -3,得到-3.3333。如果是golang等其他语言,那么直接截断,因此商就是-3。10减去-3乘上-3,得到余数就是1。但如果是python,那么就向下取整,因此商是-4,所以10 -  (-4 * -3)得到-2

最新文章

  1. c#基础3
  2. 03.RedisJava客户端Jedis的使用
  3. MySql模糊查询like通配符使用详细介绍
  4. android登录界面
  5. mobile meta iphone
  6. 自制ZigBee协议分析仪
  7. Netflix性能监控工具Vector
  8. vue--监听器
  9. python进阶之 进程编程
  10. python学习之条件语句(if循环)
  11. Gym102040 .Asia Dhaka Regional Contest(寒假自训第9场)
  12. 编写一个函数 reverse_string(char * string)实现:将参数字符串中的字符反向排列 。(递归实现)
  13. 阅读<SMPTE 274M-2005 1920X1080>笔记
  14. 【python-sql】sql操作时遇到的坑
  15. boost-实用工具:noncopyable、optional、assign
  16. Scanner的概述与String类的构造和使用_DAY12
  17. nyoj 素数距离
  18. jmap和jstack使用
  19. http post url参数封装(key token 及校验码)
  20. Updated: EBS 12.1 + Transportable Tablespaces with Incremental Backup Option

热门文章

  1. [转]Android使用WebView定位问题
  2. 代码格式化工具 AStyle
  3. Chrome浏览器界面截图
  4. java导出execl报表
  5. HTTP 状态代码的完整列表
  6. Linux 安装 openoffice
  7. Lua开发环境
  8. 什么时候该使用SUM()函数
  9. 基于Centos 搭建Jenkins环境
  10. 简单实现JDBC自动加载驱动,简化数据连接和关闭数据库连接