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.Rational
and returns a newFraction
instance with valuenumerator/denominator
. If denominator is0
, it raises aZeroDivisionError
. The second version requires that other_fraction is an instance ofnumbers.Rational
and returns aFraction
instance with the same value. The next two versions accept either afloat
or adecimal.Decimal
instance, and return aFraction
instance 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 aint
type. Previously, the GCD type depended on numerator and denominator.バージョン 3.11 で変更: Underscores are now permitted when creating a
Fraction
instance from a string, following PEP 515 rules.バージョン 3.11 で変更:
Fraction
implements__int__
now to satisfytyping.SupportsInt
instance 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
float
ornumbers.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.Decimal
ornumbers.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
モジュール数値の塔を作り上げる抽象基底クラス。