表示float to fraction的字符串

Sol*_*lar 1 python string floating-point fractions python-2.7

我试图处理这样的字符串:

s = '1/2.05'
Run Code Online (Sandbox Code Playgroud)

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

Fraction(s)
Run Code Online (Sandbox Code Playgroud)

我正在获得:

ValueError: ("Invalid literal for Fraction: u'1/2.05'", u'occurred at index 3')
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

Fraction(s.split('/')[0], s.split('/')[1])
Run Code Online (Sandbox Code Playgroud)

但也有错误:

TypeError: ('both arguments should be Rational instances', u'occurred at index 3')
Run Code Online (Sandbox Code Playgroud)

如何正确解析?

谢谢大家!

Par*_*ngh 5

问题在于分数和浮点数不会混合,因此您不能对直接隐藏在分数中的浮点数的字符串进行类型转换.

尽管如此,请不要使用eval.
尝试分别处理分子和分母.(你可以使用浮点数但是更准确地直接调用字符串上的Fraction,避免精度问题.)

from fractions import Fraction
s = '1/2.05'
numerator, denominator =  s.split('/')
result = Fraction(numerator)/Fraction(denominator)
print(result)
Run Code Online (Sandbox Code Playgroud)