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

Python整数取整异常:-2/3与int(-2/3.0)结果不一致

为什么Python中-2/3返回-1,而int(-2/3.0)返回0?

这其实是两种不同取整规则加上Python版本中除法运算符行为差异导致的,我来给你拆解清楚:

1. Python 2中整数除法的「地板取整」规则

在Python 2里,当/运算符两边都是整数时,它执行的是地板除法(floor division)——也就是向负无穷方向取整,而不是你以为的向0取整。

举个例子:

  • 2/3:计算结果是0.666...,向负无穷取整就是0,和你看到的一致;
  • -2/3:计算结果是-0.666...,向负无穷取整的话,比-0.666更小的整数是-1,所以结果就是-1。

2. 浮点数除法与int()的「向0取整」规则

当你用-2/3.0时,因为其中一个操作数是浮点数,所以/执行的是浮点数除法,得到-0.6666666666666666。

而int()函数处理浮点数时,采用的是向0取整的规则——简单说就是直接截断小数部分,只保留整数部分:

  • 对于0.666...,截断后是0;
  • 对于-0.666...,截断小数部分后剩下的就是0,所以int(-0.666...)返回0。

3. Python 3中的除法行为(补充说明)

如果你切换到Python 3,这个差异会更清晰:

  • 2/3和-2/3都会返回浮点数结果(0.666...和-0.666...);
  • 整数地板除法需要用//运算符,比如-2//3会返回-1,和Python 2中-2/3的行为一致。

总结一下:你看到的结果差异,核心是整数除法(Python2的/)用地板取整,而int()对浮点数用向0取整,这两种规则在处理负数时会产生截然不同的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:48:05