分数—有理数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.8/library/fractions
移動先:案内検索

分数 —有理数

ソースコード: :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_fractionnumbers.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)と同じ値ではないことに注意してください。

ノート

Python 3.2以降では、 float から直接 Fraction インスタンスを作成することもできます。

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()関数からもアクセスできます。

__round__()
__round__(ndigits)

最初のバージョンは、最も近い intselfに返し、半分を偶数に丸めます。 2番目のバージョンは、selfFraction(1, 10**ndigits)の最も近い倍数に丸め(論理的には、ndigitsが負の場合)、再び半分を偶数に丸めます。 このメソッドには、 round()関数からもアクセスできます。

fractions.gcd(a, b)

整数 ab の最大公約数を返します。 a または b のいずれかがゼロ以外の場合、gcd(a, b)の絶対値は、 abの両方を分割する最大の整数です。b がゼロ以外の場合、gcd(a,b)b と同じ符号になります。 それ以外の場合は、 a の符号を取ります。 gcd(0, 0)0を返します。

バージョン3.5以降非推奨:代わりに math.gcd()を使用してください。

も参照してください

モジュール番号
数値タワーを構成する抽象基本クラス。