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

Python for循环输出重复内容问题的修复方法

问题根因

你遇到的输出重复问题,核心是浮点数二进制存储精度误差导致的:
步长0.1无法被二进制精确表示,np.arange(0,2.1,0.1)生成的t_max数组中,部分元素的实际存储值和理论值存在微小偏差,比如部分本应为0.8的值实际存储为0.7999999999999999。当你用t_max[j]+0.1作为np.arange的结束边界时,偶尔会因为这个微小偏差,导致结束边界实际没有达到下一个步长的阈值,np.arange生成的序列长度就和上一次循环的结果一致,进而出现重复输出。

修复方案

有两种常用的修复方式,都可以彻底解决重复问题:

  • 方案1:全链路用整数计算,最后再做缩放,从根源避免浮点数精度问题
import numpy as np
# 按0.1的倍率放大10倍,用整数生成序列再缩放回原尺度
t_max = np.arange(0, 21, 1) / 10
for j in range(2, len(t_max)):
    start = int(t_max[2] * 10)
    # 结束位置多补1个步长对应的整数单位
    end = int(t_max[j] * 10) + 1
    time = np.arange(start, end, 1) / 10
    print(time)
  • 方案2:给结束边界加一个极小的偏移量,抵消精度误差的影响
import numpy as np
# 偏移量设置为远小于步长的极小值即可,这里步长0.1,用1e-8足够
offset = 1e-8
t_max = np.arange(0, 2.1, 0.1)
for j in range(2, len(t_max)):
    time = np.arange(t_max[2], t_max[j] + 0.1 + offset, 0.1)
    print(time)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:09:04