使用Python的分数模块找到具有特定分母的最接近小数的小数

时间:2012-06-29 21:10:49

标签: python fractions

使用Python的fractions模块,我可以执行以下操作:

>>> from fractions import Fraction
>>> import math
>>> target_number = str( 10 / math.pi )
>>> Fraction( target_number )
Fraction(39788735773, 12500000000)

但是,如果我想要十六分之一的分数,我该怎么办?也就是Fraction(51, 16)。使用limit_denominator(16)仅使最大分母为16:

>>> Fraction( target_number ).limit_denominator(16)
Fraction(35, 11)

使用fractions模块有没有直接的方法呢?

2 个答案:

答案 0 :(得分:4)

在没有fractions模块的情况下计算你需要的分子是直截了当的 - 它只是16*target_number的最接近的整数 - 如果你想要Fraction那么你可以(并且应该)只是说(当然没有字母化你的目标号码):

Fraction(int(round(16*target_number)),16)

(根据经验,它看起来好像省略int()并没有阻止它起作用,但根据你应该传递有理数的文档。)

答案 1 :(得分:1)

>>> target = 10 / math.pi
>>> denominator = 16
>>> fractions.Fraction(int(round(target*denominator)), denominator)
Fraction(51, 16)