はじめに
前回、小数をpythonで扱うことを書きました。
今回は小数ではなく、分数の表し方を調べました。
fractions
fractionsはpythonの標準ライブラリに属する、
有理数(分数で表現できるような値)を扱うためのモジュールです。
from fractions import Fraction
以下のようにFractionに二つの数値型の引数を渡すか、
文字列型で直接分数を渡すことで表現できます。
x = Fraction(1, 3)
print(x)
y = Fraction('1/3')
print(y)
# 1/3
# 1/3
また、この分数に対し計算することも可能です。
print(x * 3)
# 1
また、以下のメソッドで分子、分母を表現します。
print(x.numerator)
print(x.denominator)
# 1
# 3
さらに以下のように小数を渡すことで、
y = Fraction(1.1)
print(y)
# 2476979795053773/2251799813685248
あれ?
小数→分数は注意が必要 (2020/10/05に修正)
前回と同様の流れですが、小数をPythonで取り扱う時、正確な値ではなく近似値であることを注意しなければいけません。
そこで前回使用したDecimal型を経由することで、(有理数の)小数を分数で表現することができます。
文字列型をそのまま渡すことで表現可能です。
(※ @BlueRayi さんにコメントにて正しい方法を教えていただきました。)
y = Fraction("1.1")
print(y)
# 11/10
終わりに
実際に分数をプログラム中で扱いたいような場面というのは限定的ですが、
覚えていても損はないかと思います。