Mitjançant el mòdul de fraccions de la biblioteca estàndard de Python, podeu realitzar càlculs amb fraccions (nombres racionals).
El següent s’explica aquí.
- Constructor de la fracció
- Obteniu els valors del numerador i del denominador com a nombres enters
- Càlcul i comparació de fraccions (nombres racionals)
- Convertir fraccions a decimals (float)
- Conversió de fracció a cadena (str).
- Obtenir una aproximació de nombres racionals
Constructor de la fracció
Hi ha diverses maneres de crear una instància de fracció. En tots els casos, la fracció es divideix automàticament en fraccions.
Especifiqueu el numerador i el denominador com a nombres enters
Especifiqueu el numerador i el denominador com a nombres enters, respectivament. Si s’omet el denominador, se suposa que és 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
fracció decimal(float)
Si es passa un valor fraccionari, es converteix en una fracció.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Si voleu aproximar-vos especificant un denominador màxim, utilitzeu el mètode limit_denominator() que es descriu a continuació.
cadena de caràcters(str)
Si es passa un valor de cadena, es converteix en una fracció.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Obteniu els valors del numerador i del denominador com a nombres enters
Els atributs del tipus Fracció us permeten obtenir valors enters per al numerador i el denominador, respectivament. No es poden canviar.
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
Càlcul i comparació de fraccions (nombres racionals)
Els operadors aritmètics es poden utilitzar per calcular sumes, restes, etc.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
També es poden utilitzar operadors de comparació.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Convertir fraccions a decimals (float)
Pot convertir de fraccions a decimals amb float().
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Quan es calcula amb un nombre decimal, es converteix automàticament a un tipus flotant.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Conversió de fracció a cadena (str).
Per convertir en una cadena, utilitzeu str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Obtenir una aproximació de nombres racionals
Es pot obtenir una aproximació de nombres racionals amb el mètode limit_denominator() del tipus Fraction.
Retorna el nombre racional (fracció) el denominador del qual és menor o igual que l’argument max_denominator. Si s’omet, max_denominator=1000000.
Nombres irracionals aproximats com pi i el 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 decimals circulars en fraccions
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