Je souhaite diviser la série temporelle en états. La valeur maximale de la série temporelle est de 1,8 et la valeur minimale est de -0,5. Elle est divisée en 115 intervalles d'état. La largeur de chaque intervalle d'état est de 0,02. l'intervalle est converti en valeur au milieu de l'intervalle. J'ai écrit un morceau de code, mais le nombre de décimales dans la valeur obtenue est très étrange, aidez-moi à résoudre le problème, merci
__author__ = 'Administrator'
file = open('yij.txt','r')
while 1:
line = file.readline()
a = line.split()
m=0
b=[-0.5,-0.48,-0.46,-0.44,-0.42,-0.40,-0.38,-0.36,-0.34,-0.32,-0.30,-0.28,-0.26,-0.24,-0.22,-0.20,-0.18,-0.16,-0.14,-0.12,-0.10,-0.08,-0.06,-0.04,-0.02,0.00,0.02,
0.04,0.06,0.08,0.10,0.12,0.14,0.16,0.18,0.20,0.22,0.24,0.26,0.28,0.30,0.32,0.34,0.36,0.38,0.40,0.42,0.44,0.46,0.48,0.50,0.52,0.54,0.56,0.58,0.60,0.62,0.64,
0.66,0.68,0.70,0.72,0.74,0.76,0.78,0.80,0.82,0.84,0.86,0.88,0.90,0.92,0.94,0.96,0.98,1.00,1.02,1.04,1.06,1.08,1.10,1.12,1.14,1.16,1.18,1.20,1.22,1.24,1.26,1.28,
1.30,1.32,1.34,1.36,1.38,1.40,1.42,1.44,1.46,1.48,1.50,1.52,1.54,1.56,1.58,1.60,1.62,1.64,1.66,1.68,1.70,1.72,1.74,1.76,1.78,1.80]
if line != '':
file1 = open('yij_state.txt', 'a+')
for i in b:
if i<float(a[0])<=i+0.02:
file1.write("%.2f\n" % (i+0.01))
if float(a[0])<=-0.5:
file1.write("%.2f\n" % (-0.49))
elif float(a[0])>1.8:
file1.write("%.2f\n" % (1.79))
break
file1.close
else:
break
file.close
Le code a été corrigé
Gardez simplement deux décimales