我在后端上使用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
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top