Ciao a tutti stavo scrivendo un programma che dato un numero ritorna i primi l termini del suo sviluppo in frazione contina. Eccolo:
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))
return L
Il problema è la condizione di arresto del while: il ciclo continua finchè la parte decimale di x è nulla. Purtroppo i numeri del calcolatore sono finiti quindi spesso vengono approssimati col numero macchina più vicino ma questo rende l'output errato. Ho provato a utilizzare round per troncare un po' i numeri ma funziona raramente. Come potrei modificarlo?