À l'aide du module fractions de la bibliothèque Python standard, vous pouvez effectuer des calculs avec des fractions (nombres rationnels).
Ce qui suit est expliqué ici.
- Constructeur de Fraction
- Obtenir les valeurs du numérateur et du dénominateur sous forme d'entiers
- Calculer et comparer des fractions (nombres rationnels)
- Conversion de fractions en décimales (float)
- Conversion de fractions en chaînes de caractères (str)
- Obtenir une approximation d'un nombre rationnel
Constructeur de Fraction
Il existe plusieurs façons de créer une instance de Fraction. Dans tous les cas, la fraction est automatiquement divisée en fractions.
Spécifier le numérateur et le dénominateur comme des entiers
Spécifiez le numérateur et le dénominateur comme des entiers, respectivement. Si le dénominateur est omis, il est supposé être égal à 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
fraction décimale (float)
Si une valeur fractionnaire est passée, elle est convertie en fraction.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Si vous souhaitez faire une approximation en spécifiant un dénominateur maximum, utilisez la méthode limit_denominator() décrite ci-dessous.
chaîne de caractères (str)
Si une valeur de type chaîne est passée, elle est convertie en fraction.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Obtenir les valeurs du numérateur et du dénominateur sous forme d'entiers
Les attributs de type Fraction permettent d'obtenir des valeurs entières pour le numérateur et le dénominateur, respectivement. Ils ne peuvent pas être modifiés.
numerator
denominator
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 (nombres rationnels)
Les opérateurs arithmétiques permettent de calculer des additions, des soustractions, etc.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
Les opérateurs de comparaison peuvent également être utilisés.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Conversion de fractions en décimales (float)
Peut convertir des fractions en décimales avec float().
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Lorsqu'il est calculé avec un nombre décimal, il est automatiquement converti en type flottant.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Conversion de fractions en chaînes de caractères (str)
Pour convertir en chaîne de caractères, utilisez str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Obtenir une approximation d'un nombre rationnel
Une approximation en nombre rationnel peut être obtenue avec la méthode limit_denominator() de type Fraction.
Renvoie le nombre rationnel (fraction) dont le dénominateur est inférieur ou égal à l'argument max_dénominateur. S'il est omis, dénominateur_maximum=1000000.
Approximer des nombres irrationnels tels que pi et le nombre 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 décimales circulaires 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