分数 —有理数
ソースコード: :source: `Lib / fractions.py`
fractions モジュールは、有理数演算のサポートを提供します。
分数インスタンスは、整数のペア、別の有理数、または文字列から構築できます。
- class fractions.Fraction(numerator=0, denominator=1)
class fractions.Fraction(other_fraction)
class fractions.Fraction(float)
class fractions.Fraction(decimal)
class fractions.Fraction(string) 最初のバージョンでは、分子と分母が numbers.Rational のインスタンスであり、値 [の新しい Fraction インスタンスを返す必要があります。 X179X]。 分母が
0
の場合、 ZeroDivisionError が発生します。 2番目のバージョンでは、 other_fraction が numbers.Rational のインスタンスであり、同じ値の Fraction インスタンスを返す必要があります。 次の2つのバージョンは、 float または decimal.Decimal インスタンスのいずれかを受け入れ、まったく同じ値の Fraction インスタンスを返します。 バイナリ浮動小数点に関する通常の問題(浮動小数点演算:問題と制限を参照)により、Fraction(1.1)
の引数は11/10と正確に等しくないため、[ X196X] は、予想どおりはFraction(11, 10)
を返しません。 (ただし、以下の limit_denominator()メソッドのドキュメントを参照してください。)コンストラクターの最後のバージョンでは、文字列またはUnicodeインスタンスが必要です。 このインスタンスの通常の形式は次のとおりです。[sign] numerator ['/' denominator]
ここで、オプションの
sign
は「+」または「-」のいずれかであり、numerator
およびdenominator
(存在する場合)は10進数の文字列です。 さらに、有限値を表し、 float コンストラクターによって受け入れられる文字列は、 Fraction コンストラクターによっても受け入れられます。 どちらの形式でも、入力文字列には先頭および/または末尾の空白が含まれる場合があります。 ここではいくつかの例を示します。>>> from fractions import Fraction >>> Fraction(16, -10) Fraction(-8, 5) >>> Fraction(123) Fraction(123, 1) >>> Fraction() Fraction(0, 1) >>> Fraction('3/7') Fraction(3, 7) >>> Fraction(' -3/7 ') Fraction(-3, 7) >>> Fraction('1.414213 \t\n') Fraction(1414213, 1000000) >>> Fraction('-.125') Fraction(-1, 8) >>> Fraction('7e-6') Fraction(7, 1000000) >>> Fraction(2.25) Fraction(9, 4) >>> Fraction(1.1) Fraction(2476979795053773, 2251799813685248) >>> from decimal import Decimal >>> Fraction(Decimal('1.1')) Fraction(11, 10)
Fraction クラスは、抽象基本クラス numbers.Rational を継承し、そのクラスのすべてのメソッドと操作を実装します。 Fraction インスタンスはハッシュ可能であり、不変として扱う必要があります。 さらに、 Fraction には、次のプロパティとメソッドがあります。
バージョン3.2で変更: Fraction コンストラクターは、 float および decimal.Decimal インスタンスを受け入れるようになりました。
- numerator
最低項の分数の分子。
- denominator
最低項の分数の分母。
- as_integer_ratio()
比率が分数に等しく、分母が正の2つの整数のタプルを返します。
バージョン3.8の新機能。
- from_float(flt)
このクラスメソッドは、 flt の正確な値を表す Fraction を作成します。これは、 float である必要があります。
Fraction.from_float(0.3)
はFraction(3, 10)
と同じ値ではないことに注意してください。
- from_decimal(dec)
このクラスメソッドは、 dec の正確な値を表す Fraction を作成します。これは decimal.Decimal インスタンスである必要があります。
ノート
Python 3.2以降では、 Fraction インスタンスを decimal.Decimal インスタンスから直接構築することもできます。
- limit_denominator(max_denominator=1000000)
分母が最大でmax_denominatorである
self
に最も近い Fraction を見つけて返します。 この方法は、与えられた浮動小数点数の有理数近似を見つけるのに役立ちます。>>> from fractions import Fraction >>> Fraction('3.1415926535897932').limit_denominator(1000) Fraction(355, 113)
または、floatとして表される有理数を回復する場合:
>>> from math import pi, cos >>> Fraction(cos(pi/3)) Fraction(4503599627370497, 9007199254740992) >>> Fraction(cos(pi/3)).limit_denominator() Fraction(1, 2) >>> Fraction(1.1).limit_denominator() Fraction(11, 10)
- __floor__()
最大の int
<= self
を返します。 このメソッドには、 math.floor()関数からもアクセスできます。>>> from math import floor >>> floor(Fraction(355, 113)) 3
- __ceil__()
最小の int
>= self
を返します。 このメソッドには、 math.ceil()関数からもアクセスできます。
- fractions.gcd(a, b)
整数 a と b の最大公約数を返します。 a または b のいずれかがゼロ以外の場合、
gcd(a, b)
の絶対値は、 a と bの両方を分割する最大の整数です。 。 b がゼロ以外の場合、gcd(a,b)
は b と同じ符号になります。 それ以外の場合は、 a の符号を取ります。gcd(0, 0)
は0
を返します。バージョン3.5以降非推奨:代わりに math.gcd()を使用してください。