fractions — Rational numbers¶
Código-fonte: Lib/fractions.py
O módulo fractions fornece suporte para aritmética de números racionais.
Uma instância de Fraction pode ser construída a partir de um par de números inteiros, de outro número racional ou de uma string.
-
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 Aritmética de ponto flutuante: problemas e limitações), 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]
where the optional
signmay be either ‘+’ or ‘-’ andnumeratoranddenominator(if present) are strings of decimal digits. In addition, any string that represents a finite value and is accepted by thefloatconstructor is also accepted by theFractionconstructor. In either form the input string may also have leading and/or trailing whitespace. Here are some examples:>>> 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)
The
Fractionclass inherits from the abstract base classnumbers.Rational, and implements all of the methods and operations from that class.Fractioninstances are hashable, and should be treated as immutable. In addition,Fractionhas the following properties and methods:Alterado na versão 3.2: O construtor
Fractionagora aceita instânciasfloatedecimal.Decimal.Alterado na versão 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.-
numerator¶ Numerador de Fraction no menor termo.
-
denominator¶ Denominador de Fraction no menor termo.
-
as_integer_ratio()¶ Return a tuple of two integers, whose ratio is equal to the Fraction and with a positive denominator.
Novo na versão 3.8.
-
from_float(flt)¶ This class method constructs a
Fractionrepresenting the exact value of flt, which must be afloat. Beware thatFraction.from_float(0.3)is not the same value asFraction(3, 10).
-
from_decimal(dec)¶ This class method constructs a
Fractionrepresenting the exact value of dec, which must be adecimal.Decimalinstance.Nota
A partir do Python 3.2, você também pode construir uma instância
Fractiondiretamente de uma instância dedecimal.Decimal.
-
limit_denominator(max_denominator=1000000)¶ Encontra e retorna o
Fractionmais próximo deselfque tem denominador no máximo max_denominator. Este método é útil para encontrar aproximações racionais para um dado número de ponto flutuante:>>> from fractions import Fraction >>> Fraction('3.1415926535897932').limit_denominator(1000) Fraction(355, 113)
ou para recuperar um número racional que é representado como um ponto flutuante:
>>> 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__()¶ Retorna o maior
int<= self. Este método também pode ser acessado por meio da funçãomath.floor():>>> from math import floor >>> floor(Fraction(355, 113)) 3
-
__ceil__()¶ Retorna o menor
int>= self. Este método também pode ser acessado por meio da funçãomath.ceil().
-
__round__()¶ -
__round__(ndigits) A primeira versão retorna o
intmais próximo deself, arredondando a metade para par. A segunda versão arredondaselfpara o múltiplo mais próximo deFraction(1, 10**ndigits)(logicamente, sendigitsfor negativo), novamente arredondando a metade para par. Este método também pode ser acessado por meio da funçãoround().
-
Ver também
- Módulo
numbers As classes base abstratas que compõem a torre numérica.