使用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
模块有没有直接的方法呢?
答案 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)