有没有简单将带分数转换为浮点数的Python模块?

6 投票
2 回答
773 浏览
提问于 2025-04-17 02:01

我只是想知道,是否可以很简单地把一个混合数(无论是以数字还是字符串的形式输入)转换成浮点数或者整数。我查过 fractions 模块,但感觉它似乎不能满足我的需求,或者我没看明白。

我只是想知道在我自己写函数之前,是否已经有现成的解决方案。顺便说一下,这就是我想要的:

convert(1 1/2)

或者

convert('1 1/2')

谢谢。

2 个回答

1

我写了一个叫 Mixed 的类,用来扩展分数的功能,正是为了实现这个目的。源代码可以在 这里 下载。

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

内置的 Fraction 类似乎不支持像你提到的那种带分数(混合分数),不过其实把它们拆开也不难,可以通过空格来分开。比如,你可以这样写 1 + fractions.Fraction('1/2'),或者用一种非常简单的方法

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

撰写回答