2011-09-11 18 views
5

Mi stavo solo chiedendo se potevo convertire facilmente un numero misto (inserito come numero o una stringa) in un numero in virgola mobile o in un numero intero. Ho esaminato il modulo frazioni ma sembra che non possa fare quello che voglio, o non ho letto bene.Esiste un modulo Python in cui posso convertire facilmente le frazioni miste in un float?

Volevo solo sapere se qualcosa esiste già prima di scrivere la mia funzione. Ecco quello che sto cercando, btw:

convert(1 1/2) 

o

convert('1 1/2') 

Grazie.

risposta

9

La classe integrata Fraction non sembra supportare le frazioni miste come avete, ma non sarebbe troppo difficile dividerle nello spazio. Ad esempio, 1 + fractions.Fraction('1/2') o un molto semplicistico

def convert(f): 
    whole, frac = f.split() 
    return int(whole) + fractions.Fraction(frac) 
+0

Grazie signore, sì, potrei semplicemente dividere (''), questo è tutto quello che volevo sapere, grazie ancora :) – arscariosus

0

ho scritto la classe Mixed di estendere le frazioni di fare proprio questo. La fonte è here.

>>> float(Mixed('6 7/8')) 
6.875 
>>> float(Mixed(1,1,2)) # 1 1/2 
1.5 
Problemi correlati