Python自动将部分分数的分子和分母转换为大数。为什么?

Python automatically converts the numerator and denominator of some fractions into big numbers. Why?

这是一个例子:

x = frac(1,3)
x
Out[138]: Fraction(1, 3)
y = frac(5/39)
y
Out[140]: Fraction(288692283805801, 2251799813685248)
print(x+y)
3117876665102651/6755399441055744
x+y
Out[142]: Fraction(3117876665102651, 6755399441055744)

为什么5/39会自动转换为288692283805801/2251799813685248? 使用 Python 3.7.8

5/39 是一个浮点数,不能精确表示为 5/39。分子分母大的分数是正好表示近似于5/39的浮点数的有理数

试试 fractions.Fraction(5, 39)

分数模块的文档中给出了一个类似的例子,Fraction(1.1) 没有像人们天真地期望的那样返回 Fraction(11, 10)https://docs.python.org/3/library/fractions.html