You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中`int(x / y)`与`x // y`的差异及原因?

Python 3中x // y与int(x / y)的差异

在Python 3里,x // y(地板除法)和int(x / y)(先除法再转整数)确实存在差异,核心区别体现在负数运算场景,本质是两者遵循的舍入规则完全不同。

具体差异表现

1. 正数运算时结果一致

当x和y均为正数时,两种方式的结果相同:

  • 5 // 2 → 2,int(5 / 2) → 2
  • 10 // 3 → 3,int(10 / 3) → 3
    这是因为正数的商是正浮点数,向下取整和截断小数部分的效果一致。

2. 负数运算时结果不同

这是两者差异的核心场景,因为舍入规则的不同导致结果天差地别:

  • 地板除法//:遵循向下取整(向负无穷方向舍入),即取不大于商的最大整数。
  • int(x / y):对浮点数执行向零截断,直接丢弃小数部分,保留靠近零的整数。

举几个实际例子:

  • 计算-5 // 2:商是-2.5,向下取整得到-3;而int(-5 / 2)是直接截断-2.5的小数部分,得到-2。
  • 计算7 // -3:商是-2.333...,向下取整得到-3;而int(7 / -3)截断小数后得到-2。
  • 计算-7 // -3:商是2.333...,向下取整得到2;int(-7 / -3)截断后也是2(此时正数场景,结果一致)。

差异根源

  • x / y在Python 3中始终返回浮点数,int()对浮点数的转换逻辑是截断小数部分,只保留整数位,无论正负。
  • //是Python的地板除法运算符,其设计逻辑是返回小于等于商的最大整数,也就是向负无穷方向舍入,不受操作数正负的影响。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:18:21