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

Python中22313.6/0.8除法结果异常,咨询原因与解决方法

为什么22313.6/0.8在Python中得不到预期的整数27892?

问题原因

这是二进制浮点数的精度限制导致的。计算机用二进制存储浮点数,但很多十进制小数(比如0.8、22313.6)无法被二进制精确表示,只能存储它们的近似值。

比如你可以打印这两个数的实际存储值:

print(22313.6)  # 输出22313.599999999998
print(0.8)      # 输出0.80000000000000004

当这两个近似值相除时,结果自然会偏离精确的27892,得到类似27891.999999999996这样的浮点数。

解决方法

这里有几种可靠的解决方式:

  • 转换为整数运算:把两个数都放大10倍,转成整数后再相除,完全避开浮点数精度问题:

    result = 223136 // 8
    print(result)  # 输出27892
    
  • 使用decimal模块精确计算:这个模块专门用于处理高精度的十进制运算,能精准表示十进制小数:

    from decimal import Decimal
    
    num1 = Decimal('22313.6')
    num2 = Decimal('0.8')
    result = num1 / num2
    print(result)  # 输出27892
    
  • 对结果四舍五入:如果只是这个特定场景,也可以直接对浮点数结果做四舍五入,但注意这种方法只适用于误差极小的情况:

    result = round(22313.6 / 0.8)
    print(result)  # 输出27892
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:39:51