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

Python如何将数字四舍五入到一位小数?(8.25需得8.3)

解决Python中8.25四舍五入到1位小数的预期不符问题

问题原因

这是因为二进制浮点数的精度限制:十进制的8.25看似是精确值,但在二进制浮点数体系中无法被精准存储,实际内存里的近似值略小于8.25(比如8.249999999999999)。调用round()或格式化字符串时,会基于这个近似值计算,最终得到8.2而非你期望的8.3。

可靠解决方案:使用decimal模块

如果需要严格遵循十进制四舍五入规则,推荐用Python标准库的decimal模块,它支持精确的十进制算术运算,彻底规避浮点数精度问题:

from decimal import Decimal, ROUND_HALF_UP

# 用字符串传入数字,确保十进制精度不丢失
num = Decimal("8.25")
# 指定保留1位小数,采用ROUND_HALF_UP规则(即常规四舍五入:≥0.05则进1)
rounded_num = num.quantize(Decimal("0.1"), rounding=ROUND_HALF_UP)
print(rounded_num)  # 输出 8.3

这个方法适配所有整数或多位小数场景:

  • 处理8.35时,会正确得到8.4
  • 处理整数5时,会得到5.0

关于“加0.05后截取”方法的问题

你考虑的加0.05再截取的方法存在明显漏洞:

  • 对于8.24,加0.05后是8.29,截取1位小数会得到8.3,这违背了四舍五入规则(原数应舍为8.2)
  • 同样受浮点数精度影响,8.35加0.05后可能变成8.399999999999999,截取后得到8.3,依然不符合预期

因此不推荐使用这种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 17:10:27