Calculul fracțiilor (numere raționale) cu fracții

Afaceri

Utilizând modulul fracții din biblioteca standard Python, puteți efectua calcule cu fracții (numere raționale).

Aici se explică următoarele.

  • Constructor de fracție
  • Obțineți valorile numitorului și numitorului ca numere întregi
  • Calcularea și compararea fracțiilor (numere raționale)
  • Conversia fracțiilor în zecimale (float)
  • Conversia Fracție în șir de caractere (str)
  • Obțineți aproximarea numărului rațional

Constructor de fracție

Există mai multe moduri de a crea o instanță de fracție. În toate cazurile, fracția este împărțită automat în fracții.

Specificați numărătorul și numitorul ca numere întregi

Specificați numărătorul și numitorul ca numere întregi, respectiv numitorul. În cazul în care numitorul este omis, se presupune că este egal cu 1.

from fractions import Fraction

print(Fraction(1, 3))
# 1/3

print(Fraction(2, 6))
# 1/3

print(Fraction(3))
# 3

fracție zecimală (float)

Dacă este transmisă o valoare fracționară, aceasta este convertită într-o fracție.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Dacă doriți să aproximați prin specificarea unui numitor maxim, utilizați metoda limit_denominator() descrisă mai jos.

șir de caractere (str)

Dacă este transmisă o valoare de tip șir de caractere, aceasta este convertită într-o fracție.

print(Fraction('2/5'))
# 2/5

print(Fraction('16/48'))
# 1/3

Obțineți valorile numitorului și numitorului ca numere întregi

Atributele de tip Fraction vă permit să obțineți valori întregi pentru numitor și, respectiv, numitor. Acestea nu pot fi modificate.

  • 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

Calcularea și compararea fracțiilor (numere raționale)

Operatorii aritmetici pot fi utilizați pentru a calcula adunări, scăderi etc.

result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2)
print(result)
print(type(result))
# 25/36
# <class 'fractions.Fraction'>

Se pot utiliza, de asemenea, operatori de comparare.

print(Fraction(7, 13) > Fraction(8, 15))
# True

Conversia fracțiilor în zecimale (float)

Poate converti din fracții în zecimale cu float().

a_f = float(a)
print(a_f)
print(type(a_f))
# 0.3333333333333333
# <class 'float'>

Atunci când se calculează cu un număr zecimal, acesta este convertit automat într-un tip float.

b = a + 0.1
print(b)
print(type(b))
# 0.43333333333333335
# <class 'float'>

Conversia Fracție în șir de caractere (str)

Pentru a converti într-un șir de caractere, utilizați str().

a_s = str(a)
print(a_s)
print(type(a_s))
# 1/3
# <class 'str'>

Obțineți aproximarea numărului rațional

O aproximare a unui număr rațional poate fi obținută cu metoda limit_denominator() de tip Fracție.

Returnează numărul rațional (fracție) al cărui numitor este mai mic sau egal cu argumentul max_denominator. Dacă este omis, max_denominator=1000000.

Aproximarea numerelor iraționale, cum ar fi pi și numărul 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

Conversia zecimale circulare în fracții

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