fractions --- Rational numbers¶
ソースコード: Lib/fractions.py
fractions モジュールは有理数計算のサポートを提供します。
Fraction インスタンスは一対の整数、他の有理数、または文字列から生成されます。
- class fractions.Fraction(numerator=0, denominator=1)¶
- class fractions.Fraction(other_fraction)
- class fractions.Fraction(float)
- class fractions.Fraction(decimal)
- class fractions.Fraction(string)
The first version requires that numerator and denominator are instances of
numbers.Rationaland returns a newFractioninstance with valuenumerator/denominator. If denominator is0, it raises aZeroDivisionError. The second version requires that other_fraction is an instance ofnumbers.Rationaland returns aFractioninstance with the same value. The next two versions accept either afloator adecimal.Decimalinstance, and return aFractioninstance with exactly the same value. Note that due to the usual issues with binary floating-point (see Floating Point Arithmetic: Issues and Limitations), the argument toFraction(1.1)is not exactly equal to 11/10, and soFraction(1.1)does not returnFraction(11, 10)as one might expect. (But see the documentation for thelimit_denominator()method below.) The last version of the constructor expects a string or unicode instance. The usual form for this instance is:[sign] numerator ['/' denominator]
ここで、オプションの
signは '+' か '-' のどちらかであり、numeratorおよび (存在する場合)denominatorは十進数の数字の文字列です (コード中の整数リテラルと同様、アンダースコアを使って桁を区切れます)。さらに、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インスタンスは ハッシュ可能 で、不変 (immutable) であるものとして扱われます。加えて、Fractionには以下のプロパティとメソッドがあります:バージョン 3.2 で変更:
Fractionのコンストラクタがfloatおよびdecimal.Decimalインスタンスを受け付けるようになりました。バージョン 3.9 で変更: The
math.gcd()function is now used to normalize the numerator and denominator.math.gcd()always return ainttype. Previously, the GCD type depended on numerator and denominator.バージョン 3.11 で変更: Underscores are now permitted when creating a
Fractioninstance from a string, following PEP 515 rules.バージョン 3.11 で変更:
Fractionimplements__int__now to satisfytyping.SupportsIntinstance checks.- numerator¶
有理数を既約分数で表したときの分子。
- denominator¶
有理数を既約分数で表したときの分母。
- as_integer_ratio()¶
Return a tuple of two integers, whose ratio is equal to the Fraction and with a positive denominator.
バージョン 3.8 で追加.
- classmethod from_float(flt)¶
Alternative constructor which only accepts instances of
floatornumbers.Integral. Beware thatFraction.from_float(0.3)is not the same value asFraction(3, 10).
- classmethod from_decimal(dec)¶
Alternative constructor which only accepts instances of
decimal.Decimalornumbers.Integral.注釈
Python 3.2 以降では、
decimal.Decimalインスタンスから直接Fractionインスタンスを構築できるようになりました。
- 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()関数からでもアクセスできます。
参考
numbersモジュール数値の塔を作り上げる抽象基底クラス。