Càlcul de fraccions (nombres racionals) amb fraccions

Negocis

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