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

为何Python中6.3//2.1整数除法结果为2.0而非3.0?

浮点数整数除法结果异常的原因

这是二进制浮点数的精度误差导致的,核心问题在于:十进制里的2.1、6.3这类小数,无法用二进制浮点数精确存储,Python实际存储的是它们的近似值。

  • 你可以用repr()函数查看这些浮点数的真实存储值:
    print(repr(6.3))  # 输出 6.299999999999999
    print(repr(2.1))  # 输出 2.0999999999999996
    
  • 当执行6.3//2.1时,实际是用这两个近似值做除法:6.299999999999999 / 2.0999999999999996的结果是2.9999999999999996,而整数除法//的规则是向下取整,所以最终得到2.0。
  • 拆分成分数形式(63/10)//(21/10)也一样,因为63/10和21/10同样会被转换为不精确的二进制浮点数,运算过程还是存在精度误差,结果自然也是2.0。

至于你觉得2.1 * 3.0 == 6.3成立,是因为Python在显示浮点数时做了四舍五入,实际存储的2.0999999999999996 * 3结果就是6.299999999999999,和6.3的存储值一致,所以等式返回True,但这只是近似相等,不是精确相等。

如果需要精确的十进制运算,可以用Python标准库的decimal模块:

from decimal import Decimal
print(Decimal('6.3') // Decimal('2.1'))  # 输出 Decimal('3')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 18:37:38