我遇到if
循环问题。在脚本中,我需要检查i
和i+1
行之间的差异是否等于0.6
,如果是,则程序应计算grad[i]
值。问题是在第三个圆圈中,即使满足条件,也不会执行计算grad[i]
。
这是我的代码的一部分:
data = np.loadtxt(files[p])
N=len(data)
print "N: ", N, "\n"
for i in range(0,N-1):
print "i: ", i
j=i+1
Fi[i]=data[i,1]
errFi[i]=data[i,2]
Fj[j]=data[j,1]
errFj[j]=data[j,2]
t1=data[i,0]
t2=data[j,0]
dt=(t2-t1)
print "dt:", dt
print Fj[j]-Fi[i]
if dt == 0.6:
print " dt =", dt
if Fi[i] < Fj[j]:
r[i]=1
grad[i]=(Fj[j]-Fi[i]) / dt
else:
r[i]=-1
grad[i]=(Fi[i]-Fj[j]) / dt
print " grad[",i,"]=",grad[i]
,控制台中的结果是:
i: 0
dt: 0.6
0.148645
dt = 0.6
grad[ 0 ]= 0.247741666667
i: 1
dt: 0.6
0.061069
dt = 0.6
grad[ 1 ]= 0.101781666667
i: 2
dt: 0.6
-0.009578
i: 3
dt: 0.6
0.078995
i: 4
dt: 0.6
0.069982
答案 0 :(得分:0)
正如评论中所提到的,您正在处理浮点数,这些浮点数并不完全正确。尝试使用
data = 100 * np.loadtxt(files[p])
将dt
与60
进行比较。您的grad
(在此线性计算中)的值应自动结束。
如果某种方式对您不起作用,您可以在乘以100之后使用round()
上的dt