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
这是一个例子:
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