20
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Pythonで分数を取り扱う話

Last updated at Posted at 2019-07-15

はじめに

前回、小数を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

終わりに

実際に分数をプログラム中で扱いたいような場面というのは限定的ですが、
覚えていても損はないかと思います。

20
15
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?