3

Pythonのfractionsモジュールを使用すると、次のようなことができます。

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

しかし、16分の1の端数が必要な場合は、どうすればよいですか?つまり、Fraction(51, 16)。を使用limit_denominator(16)すると、最大分母が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 に答える