小编典典

将分数转换为浮点数?

python

有点像这个问题,但是相反。

给定类似11/2或的字符串,1 2/3将其转换为浮点数的最佳方法是什么?我正在考虑根据情况使用正则表达式,但是也许有人知道更好的方法或预先存在的解决方案。我希望可以使用eval,但是我认为第3种情况可以避免这种情况。


阅读 303

收藏
2020-12-20

共1个答案

小编典典

我稍微调整了詹姆斯的回答

def convert_to_float(frac_str):
    try:
        return float(frac_str)
    except ValueError:
        num, denom = frac_str.split('/')
        try:
            leading, num = num.split(' ')
            whole = float(leading)
        except ValueError:
            whole = 0
        frac = float(num) / float(denom)
        return whole - frac if whole < 0 else whole + frac


print convert_to_float('3') # 3.0
print convert_to_float('3/2') # 1.5
print convert_to_float('1 1/2') # 1.5
print convert_to_float('-1 1/2') # -1.5

http://ideone.com/ItifKv

2020-12-20