You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python3中1//-2与int(1/-2)结果不同的技术咨询

为什么1 // -2int(1 / -2)结果不同?

这是个很容易被忽略的细节,本质是两种操作遵循的取整规则完全不同,我给你一步步拆解清楚:

1. // 是地板除法(Floor Division)

//运算符的核心逻辑是向下取整——也就是计算结果向负无穷的方向取最近的整数。

比如计算1 // -2

  • 先算数学上的商:1 / -2 = -0.5
  • 向下取整(往更小的数方向走):比-0.5小的最近整数是-1,所以最终结果是-1

再举几个负数除法的例子验证:

  • 3 // -2 → 商是-1.5,向下取整得到-2
  • -3 // 2 → 商是-1.5,向下取整得到-2

2. int(1 / -2) 是截断小数取整

首先1 / -2是Python的普通浮点数除法,结果是-0.5。而int()函数处理浮点数时,是直接截断小数部分(向零的方向取整):

  • 对于正数,比如int(1.9)会得到1
  • 对于负数,int(-0.5)会直接去掉小数部分,得到0(因为向零的方向取整,-0.5更靠近0)

同样用例子对比:

  • int(3 / -2) → 商是-1.5,截断小数后得到-1
  • int(-3 / 2) → 商是-1.5,截断小数后得到-1

关键总结

  • 正数除法时,地板取整和截断取整结果一致(比如3//2int(3/2)都是1),所以容易忽略差异;
  • 负数除法时,两种规则的区别就会显现://向负无穷取整,int()向零取整。

内容的提问来源于stack exchange,提问作者Ryan Zhu

火山引擎 最新活动