使用 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
模块来做到这一点?
最佳答案
无需 fractions
模块即可直接计算所需的分子 -- 它只是最接近 16*target_number
的整数 -- 如果你想要一个 Fraction
然后你可以(并且应该)直接说(当然不要将你的目标数字字符串化):
Fraction(int(round(16*target_number)),16)
(从经验上看,好像省略 int()
并不会阻止它工作,但根据文档,您应该传入有理数。)
关于python - 使用 Python 的分数模块找到具有特定分母的最接近小数的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269014/