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の分数モジュールの機能を理解し、実装することができました。