3

使用 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)only 使最大分母为 16:

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

有没有一种简单的方法可以用模块做到这一点fractions

4

2 回答 2

4

在没有模块的情况下计算你需要的分子很简单fractions——它只是最接近的整数16*target_number——如果你想要一个,Fraction那么你可以(并且应该)说(当然,不用字符串化你的目标数字):

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

(根据经验,它看起来好像省略了int()并不会停止它的工作,但根据文档,你应该传入有理数。)

于 2012-06-29T21:21:01.817 回答
1
>>> target = 10 / math.pi
>>> denominator = 16
>>> fractions.Fraction(int(round(target*denominator)), denominator)
Fraction(51, 16)
于 2012-06-29T21:20:35.450 回答