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

Python按dx增量遍历x1至x2时循环输出浮点数精度异常如何解决

问题原因

核心是二进制浮点数精度误差导致的:

  • 十进制的0.1无法被二进制浮点数精确表示,Python 中 float 类型存储的本身就是接近 0.1 的近似值
  • 每次累加0.1的操作都会将微小的误差累积,多次运算后误差就会显性化,出现你看到的多位小数的异常结果
修复方案

方案1:输出时格式化处理(最简单,适合仅对输出格式有要求的场景)

修改打印语句,强制保留1位小数同时自动去除多余的尾缀.0即可:

a = 1
while a < 2:
    # 格式化后去掉末尾多余的0和小数点
    print(f"{a:.1f}".rstrip('0').rstrip('.'))
    a += 0.1

方案2:整数累加规避浮点误差(最稳妥,无精度损失)

将所有数值放大10倍转换为整数运算,输出时再缩小10倍,完全避免浮点运算的精度问题:

a = 10
while a < 20:
    res = a / 10
    # 整数结果输出整型,否则保留一位小数
    print(int(res) if res.is_integer() else res)
    a += 1

方案3:使用decimal模块做精确十进制运算(适合高精度运算场景)

如果业务本身对数值精度要求极高,可以用Python标准库的decimal模块处理十进制精确运算:

from decimal import Decimal

a = Decimal("1")
dx = Decimal("0.1")
while a < Decimal("2"):
    res = float(a)
    print(int(res) if res.is_integer() else res)
    a += dx

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:39:03