Python分数モジュールは、分数関連の計算を効率的に管理することができます。
このモジュールは、整数、浮動小数点数、10進数、文字列から分数を作成することができます。
この分数モジュールは有理数の算術演算をサポートしています。
分数モジュールの基本
- 分数モジュールのインポート
from fractions import Fraction
|
- 分数クラスのインスタンス化
分数クラスのインスタンス化:分数クラスのインスタンス化には、いくつかの方法があります。
以下はその一部です。
- 分子と分母を渡す
- float でインスタンス化する
- 10進数でインスタンス化する
- 文字列でインスタンス化する
例 分子と分母を渡してのインスタンス化
from fractions import Fraction
Fraction(1, 2)
|
例 浮動小数点数のインスタンス化
from fractions import Fraction
Fraction(2.5)
|
例 10進数でインスタンス化する
from fractions import Fraction
from decimal import Decimal
Fraction(Decimal('1.1'))
|
例 文字列のインスタンス化
from fractions import Fraction
Fraction('9/16')
|
この記事もチェック:Pythonのfloat関数を使って整数や文字列を浮動小数点に変換する方法
分数の作成
import fractions
for num, decimal in [(1, 2), (3, 6), (30, 7)]:
result = fractions.Fraction(num, decimal)
print('{}/{} = {}'.format(num, decimal, result))
|
結果は以下の通りです。
1/2 = 1/2
3/6 = 1/2
30/7 = 30/7
|
分数の算術演算をする
次の例では、分数に対するさまざまな算術演算を説明します。
from fractions import Fraction
print(Fraction(100, 10) + Fraction(25, 5))
print(Fraction(18, 5) / Fraction(18, 10))
print(Fraction(18, 15) * Fraction(16, 25))
print(Fraction(17, 25) * Fraction(15, 25))
print(Fraction(12, 5) ** Fraction(12, 11))
|
結果を出力すると、以下の様になります。
from fractions import Fraction
print(Fraction(10, 35))
print(Fraction(10, 13))
print(Fraction()) # default value
|
分数インスタンス
分数のインスタンスは、整数、有理数、文字列の組から構築される分数です。
分数はハッシュ可能で不変なので、一度作成したらその値を変更することはできません。
class fractions.Fraction(numerator=0, denominator=1) : 分子と分母が数値であることが必要です。
分母を0とした場合、ゼロ除算のエラーが発生します。
例えば、以下の様になります。
2/7
10/13
0 |
結果は以下の通りです。
import math
from fractions import Fraction
print("Square root: {}".format(math.sqrt(Fraction(21, 4))))
print("Floored to: {}".format(math.floor(Fraction(4100, 1100))))
print("Sined Fraction: {}".format(Fraction(math.sin(math.pi/2))))
|
分数を使った計算の組み合わせ
mathモジュールの機能は、分数表現と混在させることができます。
以下の例は、そのような表現です。
Square root: 2.29128784747792
Floored to: 3
Sined Fraction: 1
|
結果は以下の通りです。
import fractions
result = fractions.Fraction('21/8')
print('Rounded without limit : {}'.format(round(result)))
print('Rounded to 2 digits : {}'.format(round(result, 2)))
|
分数の四捨五入
分母を何桁にするかで四捨五入することができます。
例えば、以下の様になります。
Rounded without limit : 3
Rounded to 2 digits : 131/50
|
結果は以下の通りです。

まとめ
Pythonの分数モジュールの機能を理解し、実装することができました。