Ho scritto questo codice che dato un numero x ritorna il suo sviluppo in frazione continua fino al termine l-esimo:
def fraz_cont(x,l):
if(x>0):
L=[int(x)]
else:
L=[int(x)-1]
x=x-int(x)+1
while(len(L)<l and x!=int(x)):
x=1/(round(x-int(x),12))
L.append(int(x))
return L
Il while termina non appena la parte decimale di x diventa nulla. Il problema è che i numeri vengono approssimati al numero di macchina più vicino producendo risultati errati (ad esempio quello che dovrebbe essere 0.25 risulta essere 0.2500000003). Ho provato a troncarli con round() ma spesso non funziona. Come potrei aggiustarlo?