以Django形式解析分数
-
29-09-2019 - |
题
我在后端上使用Django,在前端使用jQuery。我想同时接受分数和整数(例如“ 1/2”,“ 1 1/4”或“ 2”,用于食谱中的成分数量。)我正在使用floatfield来存储这些值。将这些分数/整数转换为浮子的最佳方法是什么?
解决方案
>>> import fractions
>>> fractions.Fraction("1")
Fraction(1, 1)
>>> fractions.Fraction("1/2")
Fraction(1, 2)
不幸的是, fraction
构造函数不处理混合分数(“ 1 1/2”),因此您将不得不写一些东西以自己解析。您可以使用自定义字段或将它们施放到数据库中 float
.
其他提示
这对我有用。仍然可以清理一点。
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
不隶属于 StackOverflow