我可以从一个数字中得到分数吗?
我正在进行一些计算,在输出结果之前,我想把数字转换成分数。比如说,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)