在进行Python 3.52中的浮点类型到分数类型转换练习时,我发现了两种不同转换方式之间的差异。
第一种方法是:
>>> 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
- Abdul Haseeb