Pythonで分数を計算する方法

Python

本記事ではPythonで分数を計算する方法を解説します。
Pythonで分数を計算するには標準ライブラリfractionsモジュールを使う方法と、代数計算ライブラリのSymPyを使う方法があります。

標準ライブラリfractionsモジュールを使う方法

まずは、標準ライブラリfractionsモジュールを使う方法を紹介します。
例として、1/2 + 1/3 = 5/6をライブラリを使って計算してみましょう。
下記で分数の計算が可能です。

from fractions import Fraction
 
# 1/2
frac1 = Fraction(1, 2)
# 1/3
frac2 = Fraction(1, 3)
 
print(frac1+frac2) # 5/6

もちろん、他に引き算、掛け算、割り算も可能です。

from fractions import Fraction
 
# 1/2
frac1 = Fraction(1, 2)
# 1/3
frac2 = Fraction(1, 3)
 
print(frac1-frac2) # 1/6
print(frac1*frac2) # 1/6
print(frac1/frac2) # 3/2

また、約分も可能です。

from fractions import Fraction

# 3/6
frac1 = Fraction(3, 6)

print(frac1) # 1/2

さらに、分数から小数点に変換することも可能です。

from fractions import Fraction

# 1/2
frac1 = Fraction(1, 2)

print(float(frac1)) # 0.5

続いて、小数点から分数に変換することもできます。

from fractions import Fraction

print(Fraction(0.5)) # 1/2

しかし、循環小数はあまりうまく小数点から分数に変換できません。
その場合、limit_denominator()メソッドを使用することで近似値を算出できます。

from fractions import Fraction

# NG
print(Fraction(0.3333333333333333)) # 6004799503160661/18014398509481984

# OK
print(Fraction(0.3333333333333333).limit_denominator()) # 1/3

SymPyライブラリを使う方法

続いてSymPyを使用して分数を計算できます。
まずは、SymPyをインストールする必要があります。下記コマンドでSymPyをインストールします。

pip install sympy
from sympy import Rational 

# 1/2
frac1 = Rational(1, 2)
# 1/3
frac2 = Rational(1, 3)

# 足し算
print(frac1+frac2) # 5/6

# 引き算
print(frac1-frac2) # 1/6

# 掛け算
print(frac1*frac2) # 1/6

# 割り算
print(frac1/frac2) # 3/2

# 約分
print(Rational(3, 6)) # 1/2

# 分数から小数に変換
print(float(Rational(1, 2))) # 0.5

# 小数から分数に変換
print(Rational(0.5)) # 1/2

# 循環小数から分数に変換(NG)
print(Rational(0.3333333333333333)) # 6004799503160661/18014398509481984

# 循環小数から分数に変換(OK)
print(Rational(0.3333333333333333).limit_denominator()) # 1/3
楽天Kobo電子書籍ストア
¥2,750 (2025/03/14 23:06時点 | 楽天市場調べ)
\楽天ポイント4倍セール!/
楽天市場
タイトルとURLをコピーしました