Výpočet zlomků (racionálních čísel) pomocí zlomků

Podnikání

Pomocí modulu zlomků standardní knihovny Pythonu můžete provádět výpočty se zlomky (racionálními čísly).

Zde je vysvětleno následující.

  • Konstruktor zlomku
  • Získat hodnoty čitatele a jmenovatele jako celá čísla
  • Výpočet a porovnávání zlomků (racionálních čísel)
  • Převod zlomků na desetinná čísla (float)
  • Převod zlomku na řetězec (str)
  • Získat aproximaci racionálního čísla

Konstruktor zlomku

Instanci zlomku lze vytvořit několika způsoby. Ve všech případech se zlomek automaticky rozdělí na zlomky.

Zadejte čitatele a jmenovatele jako celá čísla

Zadejte čitatele a jmenovatele jako celá čísla. Pokud je jmenovatel vynechán, předpokládá se, že je roven 1.

from fractions import Fraction

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

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

print(Fraction(3))
# 3

desetinný zlomek (float)

Pokud je předána zlomková hodnota, je převedena na zlomek.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Pokud chcete provést aproximaci zadáním maximálního jmenovatele, použijte níže popsanou metodu limit_denominator().

řetězec znaků (str)

Pokud je předána řetězcová hodnota, je převedena na zlomek.

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

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

Získat hodnoty čitatele a jmenovatele jako celá čísla

Atributy typu Fraction umožňují získat celočíselné hodnoty pro čitatele a jmenovatele. Nelze je měnit.

  • 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

Výpočet a porovnávání zlomků (racionálních čísel)

Aritmetické operátory lze použít k výpočtu sčítání, odčítání atd.

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

Lze použít i operátory porovnávání.

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

Převod zlomků na desetinná čísla (float)

Umí převádět zlomky na desetinná čísla pomocí funkce float().

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

Při výpočtu s desetinným číslem se automaticky převede na typ float.

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

Převod zlomku na řetězec (str)

Pro převod na řetězec použijte funkci str().

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

Získat aproximaci racionálního čísla

Aproximaci racionálního čísla lze získat pomocí metody limit_denominator() typu Fraction.

Vrátí racionální číslo (zlomek), jehož jmenovatel je menší nebo roven argumentu max_denominator. Pokud je vynechán, max_denominator=1000000.

Přibližování iracionálních čísel, jako je pí a Napierovo číslo 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

Převod kruhových desetinných čísel na zlomky

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