Analizar una fracción en una forma Django
-
29-09-2019 - |
Pregunta
Estoy usando Django en el backend y jQuery en la parte delantera. Me gustaría aceptar ambas fracciones y números enteros (como "1/2", "1/4 1" o "2", por las cantidades de ingredientes de una receta.) Estoy usando un FloatField para almacenar estos valores. ¿Cuál es la mejor manera de convertir estas fracciones / números enteros a los flotadores?
Solución
>>> import fractions
>>> fractions.Fraction("1")
Fraction(1, 1)
>>> fractions.Fraction("1/2")
Fraction(1, 2)
Por desgracia, el constructor fraction
no maneja fracciones mixtas ( "1 1/2") por lo que tendrá que escribir algo para analizar los mismo. Se pueden almacenar en la base de datos, ya sea con un campo personalizado o mediante fundición a float
.
Otros consejos
Esto funciona para mí. Todavía podría ser limpiado un poco.
import fractions
def parse_multi_part_fraction(f):
if '/' not in f:
return float(f)
parts = f.split(' ')
total = 0.0
for p in parts:
if '/' in p:
frac = fractions.Fraction(p)
total += frac.numerator * (1.0 / frac.denominator)
else:
total += float(p)
return total
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow