我可以从一个数字中得到分数吗?

1 投票
1 回答
673 浏览
提问于 2025-04-17 16:53

我正在进行一些计算,在输出结果之前,我想把数字转换成分数。比如说,0.25应该变成1/4,换句话说,就是在一个包含这两个数字的列表里,变成[1, 4]。

1 个回答

8

使用fractions模块来实现这个功能:

>>> import fractions
>>> fractions.Fraction(0.25)
Fraction(1, 4)
>>> f = fractions.Fraction(0.25)
>>> f.numerator
1
>>> f.denominator
4

如果你输入的是任意的小数,实际上你应该使用.limit_denominator()方法,这样可以把你的分数限制在合理的范围内,接近这个小数的值:

>>> from math import pi, cos
>>> fractions.Fraction(cos(pi/3))
Fraction(4503599627370497, 9007199254740992)
>>> fractions.Fraction(cos(pi/3)).limit_denominator()
Fraction(1, 2)

撰写回答