Cálculo de fracciones (números racionales) con fracciones

Negocio

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
Copied title and URL