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)
如何正确解析?
谢谢大家!
问题在于分数和浮点数不会混合,因此您不能对直接隐藏在分数中的浮点数的字符串进行类型转换.
尽管如此,请不要使用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)