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

标签 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 模块来做到这一点?

最佳答案

无需 fractions 模块即可直接计算所需的分子 -- 它只是最接近 16*target_number 的整数 -- 如果你想要一个 Fraction 然后你可以(并且应该)直接说(当然不要将你的目标数字字符串化):

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

(从经验上看,好像省略 int() 并不会阻止它工作,但根据文档,您应该传入有理数。)

关于python - 使用 Python 的分数模块找到具有特定分母的最接近小数的分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11269014/

相关文章:

python - matplotlib imshow 固定方面和垂直颜色条匹配主轴高度

python - 告诉妻子等待任务完成后再开始下一个任务

python - 使用 OpenCv Python 将蒙版应用于图像

c - 如何获得修改任何参数的函数?

algorithm - 为给定的分母范围找到最接近的 Pi 近似值

python - 暴力稳定婚姻,如何实现2个列表之间所有可能的配对?

python - 添加对位于共享驱动器上的 .dll 的引用

c++ - 找到等于实数分数的自然数分数

java - Rational 类中的构造函数 Rational 无法应用于给定类型?

python - Numpy:获取比率组合列表,使它们全部加起来为 1