
Vous pouvez gérer des fractions (nombres rationnels) avec le module fractions en Python.
Cet article décrit le contenu suivant.
- Le constructeur Fraction
- Obtenir le numérateur et le dénominateur
- Calculer et comparer des fractions
- Convertissez une fraction en un nombre à virgule flottante :
float()
- Convertissez une fraction en chaîne :
str()
- Obtenez des approximations rationnelles :
limit_denominator()
Le constructeur Fraction
Il existe plusieurs façons de créer une instance Fraction. A noter que dans tous les cas, le résultat est automatiquement réduit (simplifié).
Spécifiez le numérateur et le dénominateur sous forme d’entiers
Le dénominateur est considéré comme 1 s’il est omis.
from fractions import Fraction
print(Fraction(1, 3))
# 1/3
print(Fraction(2, 6))
# 1/3
print(Fraction(3))
# 3
Nombre à virgule flottante (float)
print(Fraction(0.25))
# 1/4
print(Fraction(0.33))
# 5944751508129055/18014398509481984
Si vous voulez faire une approximation en spécifiant le dénominateur maximum, utilisez la méthode limit_denominator() décrite ci-dessous.
Chaîne (str)
print(Fraction('2/5'))
# 2/5
print(Fraction('16/48'))
# 1/3
Obtenir le numérateur et le dénominateur
Vous pouvez obtenir le numérateur et le dénominateur avec les attributs numérateur et dénominateur de Fraction. Ils ne peuvent pas être modifiés.
a = Fraction(1, 3)
print(a)
# 1/3
print(a.numerator)
print(type(a.numerator))
# 1
# <class 'int'>
print(a.denominator)
print(type(a.denominator))
# 3
# <class 'int'>
# a.numerator = 7
# AttributeError: can't set attribute
Calculer et comparer des fractions
Vous pouvez calculer Fraction avec des opérateurs arithmétiques.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2)
print(result)
print(type(result))
# 25/36
# <class 'fractions.Fraction'>
Vous pouvez également utiliser l’opérateur de comparaison.
print(Fraction(7, 13) > Fraction(8, 15))
# True
Convertissez une fraction en un nombre à virgule flottante :float()
Vous pouvez convertir Fraction en un nombre à virgule flottante avec float().
a_f = float(a)
print(a_f)
print(type(a_f))
# 0.3333333333333333
# <class 'float'>
Le résultat d’une opération entre Fraction et float est automatiquement converti en float.
b = a + 0.1
print(b)
print(type(b))
# 0.43333333333333335
# <class 'float'>
Convertissez une fraction en chaîne :str()
Vous pouvez convertir Fraction en chaîne avec str().
a_s = str(a)
print(a_s)
print(type(a_s))
# 1/3
# <class 'str'>
Obtenez des approximations rationnelles :limit_denominator()
Vous pouvez obtenir une approximation rationnelle avec la méthode limit_denominator().
La méthode limit_denominator() renvoie Fraction dont le dénominateur est inférieur ou égal au paramètre max_denominator. La valeur par défaut est max_denominator=1000000.
Nombre approximatif de Pi et de Napier e
pi = Fraction(3.14159265359)
print(pi)
# 3537118876014453/1125899906842624
print(pi.limit_denominator(10))
print(pi.limit_denominator(100))
print(pi.limit_denominator(1000))
# 22/7
# 311/99
# 355/113
e = Fraction(2.71828182846)
print(e)
# 6121026514870223/2251799813685248
print(e.limit_denominator(10))
print(e.limit_denominator(100))
print(e.limit_denominator(1000))
# 19/7
# 193/71
# 1457/536
Convertir des nombres décimaux répétés en fractions
a = Fraction(0.565656565656)
print(a)
# 636872674577009/1125899906842624
print(a.limit_denominator())
# 56/99
a = Fraction(0.3333)
print(a)
# 6004199023210345/18014398509481984
print(a.limit_denominator())
print(a.limit_denominator(100))
# 3333/10000
# 1/3