Python, trasformare numero reale in numero intero?
L'esercizio che devo svolgere è di convertire in una base diversa un numero con la virgola; però mi blocco all'inizio perché mi dà questo errore che non capisco

che cavolo vuol dire?

che cavolo vuol dire?
Risposte
Ti sta dicendo che il float è troppo grande per essere convertito in un intero.
Ho fatto qualche tentativo, e ho visto che ad un certo punto del ciclo "while", la conversione da float a intero comincia a dare risultati errati (probabilmente c'è qualche errore nell'arrotondamento del float), perciò il ciclo va avanti a oltranza finchè il float diventa troppo grande per essere convertito.
Secondo me, se il tuo obiettivo è di spostare la virgola fino a esaurire tutti i decimali, puoi provare a scrivere la funzione in questo modo:
E' un po' rozzo, ma dovrebbe funzionare
Ho fatto qualche tentativo, e ho visto che ad un certo punto del ciclo "while", la conversione da float a intero comincia a dare risultati errati (probabilmente c'è qualche errore nell'arrotondamento del float), perciò il ciclo va avanti a oltranza finchè il float diventa troppo grande per essere convertito.
Secondo me, se il tuo obiettivo è di spostare la virgola fino a esaurire tutti i decimali, puoi provare a scrivere la funzione in questo modo:
def convFraz(n): n = float(str(n).replace(".", "")) print n
E' un po' rozzo, ma dovrebbe funzionare

okok grazie
una cosa, io ho provato a mettere come numero decimale 0.5 quindi diciamo un numero facile con una sola cifra dopo la virgola, e dava errore pure con quello; quindi tu dici che anche nella semplice operazione 0.5*10 python commette errori di approssimazione?
una cosa, io ho provato a mettere come numero decimale 0.5 quindi diciamo un numero facile con una sola cifra dopo la virgola, e dava errore pure con quello; quindi tu dici che anche nella semplice operazione 0.5*10 python commette errori di approssimazione?
Onestamente, non saprei. In realtà, l'approssimazione è corretta, ma nel momento in cui vai ad effettuare la conversione il risultato è sbagliato. Ad esempio, se provo a moltiplicare $0.326435$ per $10$ sei volte di seguito, il risultato è giusto
($326435.0$), ma nel momento in cui vado a effettuare la conversione ottengo $326434$.
($326435.0$), ma nel momento in cui vado a effettuare la conversione ottengo $326434$.
la conversione intendi da float a int?
Sì. Tra l'altro a me con $n = 0.5$ non segnala nessun problema.
P.S. Che versione di Python stai usando?
P.S. Che versione di Python stai usando?
non è proprio python, si chiama jes, lo uso per l'Università..adesso riprovo allora