在Python 3.52的float类型转换为分数类型转换时,我发现了两种不同的转换方式之间的区别。在Python中浮点到分数的转换
第一种方法是:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> print(f)
2709702426188841/2199023255552 #Answer
第二种方法是:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(str(x))
>>> print(f)
123223/100 #Answer
我想知道这两个不同的答案背后的原因是什么?对不起,如果这是一个愚蠢的问题,我是编程和Python的新手。
编辑:我发现了一种通过limit_denominator
方法,通过第一种方法来准确获得不准确的分数转换:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> f = f.limit_denominator(100)
>>> print(f)
123223/100
看起来像一个更准确的答案。这可能是这个问题的原因吗? '>>> 0.1 + 0.1 + 0.1-0.3' '5.551115123125783e-17' –
@AbdulHaseeb:这不是真正的原因,原因就像我解释的那样,可以表示的数字不需要以基数表示, 10与基于2的可以不同。 –