Utilizando el módulo de fracciones de la biblioteca estándar de Python, puedes realizar cálculos con fracciones (números racionales).
Aquí se explica lo siguiente.
- Constructor de Fracción
- Obtener los valores del numerador y del denominador como enteros
- Cálculo y comparación de fracciones (números racionales)
- Conversión de fracciones a decimales (float)
- Conversión de fracción a cadena (str)
- Obtener una aproximación de números racionales
Constructor de Fracción
Hay varias formas de crear una instancia de Fracción. En todos los casos, la fracción se divide automáticamente en fracciones.
Especifique el numerador y el denominador como números enteros
Especifique el numerador y el denominador como números enteros, respectivamente. Si se omite el denominador, se asume que es 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
fracción decimal (float)
Si se pasa un valor fraccionario, se convierte en una fracción.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Si desea aproximarse especificando un denominador máximo, utilice el método limit_denominator() que se describe a continuación.
cadena de caracteres (str)
Si se pasa un valor de cadena, se convierte en una fracción.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Obtener los valores del numerador y del denominador como enteros
Los atributos de tipo Fracción permiten obtener valores enteros para el numerador y el denominador, respectivamente. No se pueden modificar.
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álculo y comparación de fracciones (números racionales)
Los operadores aritméticos pueden utilizarse para calcular sumas, restas, etc.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
También se pueden utilizar operadores de comparación.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Conversión de fracciones a decimales (float)
Puede convertir de fracciones a decimales con float().
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Cuando se calcula con un número decimal, se convierte automáticamente a un tipo de flotador.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Conversión de fracción a cadena (str)
Para convertir a una cadena, utilice str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Obtener una aproximación de números racionales
Se puede obtener una aproximación de números racionales con el método limit_denominator() de tipo Fraction.
Devuelve el número racional (fracción) cuyo denominador es menor o igual que el argumento max_denominador. Si se omite, max_denominator=1000000.
Aproximar números irracionales como pi y el número 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 decimales circulares en fracciones
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