表示浮点数到分数的字符串

时间:2018-12-03 13:45:31

标签: python string python-2.7 floating-point fractions

我正在尝试处理这样的字符串:

s = '1/2.05'

当我尝试将其解析为分数时:

Fraction(s)

我正在获得:

ValueError: ("Invalid literal for Fraction: u'1/2.05'", u'occurred at index 3')

我也尝试过:

Fraction(s.split('/')[0], s.split('/')[1])

但也有错误:

TypeError: ('both arguments should be Rational instances', u'occurred at index 3')

如何正确解析?

谢谢大家!

1 个答案:

答案 0 :(得分:5)

问题在于分数和浮点数不会混合,因此您无法直接键入一个将浮点数隐藏在分数中的字符串。

请不要为此使用eval。
尝试分别处理分子和分母。 (您可以使用浮点数,但直接在字符串上调用小数,避免使用precision issues更为精确。)

from fractions import Fraction
s = '1/2.05'
numerator, denominator =  s.split('/')
result = Fraction(numerator)/Fraction(denominator)
print(result)