You need to enable JavaScript to run this app. Python除法所得浮点数如何四舍五入保留到最近的十分位
优惠活动
大模型
产品
解决方案
定价
更多

Python除法所得浮点数如何四舍五入保留到最近的十分位

浮点数四舍五入到十分位的实现方案

你自己写的字符串处理方案逻辑上有几处可优化的点:

  • 进位判断规则错误:当前仅当百分位大于5时才进位,符合四舍五入要求的逻辑应该是大于等于5就进位
  • 边界处理有隐患:比如输入的浮点数小数位不足2位时,会触发索引异常直接返回原值,虽然你加了异常捕获但逻辑不严谨;遇到1.96这类需要连续进位的场景,处理后返回的整数转float虽然结果正确,但如果需要统一保留一位小数格式的话无法满足
  • 依赖字符串拆分的处理方式会受浮点数存储精度影响,比如0.1+0.2得到的0.30000000000000004拆分后容易得到不符合预期的结果

下面是两种更简洁可靠的实现方式:

方法1:使用Python内置round函数(简单场景适用)

直接调用内置方法,第二个参数指定保留的小数位数即可:

# 示例
print(round(1.333333333, 1)) # 输出 1.3
print(round(1.36, 1)) # 输出 1.4

注意:Python的round默认使用银行家舍入规则,即当要保留位数的下一位刚好是5时,会取最近的偶数,且会受浮点数二进制存储的精度误差影响,比如round(2.675, 2)会得到2.67而非2.68,对精度要求高的场景推荐用下面的decimal方案。

方法2:使用decimal模块(高精度严格四舍五入场景适用)

可以自定义舍入规则,完全避免浮点数精度问题:

from decimal import Decimal, ROUND_HALF_UP

def round_to_tenth(num: float) -> float:
    # 先将输入转字符串再转Decimal避免浮点数精度损失
    num_dec = Decimal(str(num))
    # 按四舍五入规则保留1位小数
    rounded_num = num_dec.quantize(Decimal("0.1"), rounding=ROUND_HALF_UP)
    return float(rounded_num)

# 示例测试
print(round_to_tenth(1.333333333)) # 输出 1.3
print(round_to_tenth(1.35)) # 输出 1.4
print(round_to_tenth(1.96)) # 输出 2.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 20:00:01