Računanje ulomkov (racionalnih števil) z ulomki

Posel

Z modulom za ulomke standardne knjižnice Python lahko izvajate izračune z ulomki (racionalnimi števili).

Tukaj je pojasnjeno naslednje.

  • Konstruktor ulomka
  • Pridobite vrednosti števca in imenovalca kot cela števila
  • Računanje in primerjanje ulomkov (racionalnih števil)
  • Pretvarjanje ulomkov v decimalke (float)
  • Pretvorba ulomka v niz (str)
  • Pridobite približek racionalnega števila

Konstruktor ulomka

Primer frakcije lahko ustvarite na več načinov. V vseh primerih se frakcija samodejno razdeli na dele.

Števec in imenovalec določite kot cela števila

Števec in imenovalec določite kot cela števila. Če je imenovalec izpuščen, se predpostavlja, da je enak 1.

from fractions import Fraction

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

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

print(Fraction(3))
# 3

desetiški ulomek (float)

Če je posredovana ulomna vrednost, se pretvori v ulomek.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Če se želite približati z določitvijo največjega imenovalca, uporabite spodaj opisano metodo limit_denominator().

niz znakov (str)

Če je posredovana vrednost v obliki niza, se pretvori v ulomek.

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

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

Pridobite vrednosti števca in imenovalca kot cela števila

Z atributi vrste Fraction lahko za števec in imenovalec dobite celoštevilske vrednosti. Ni jih mogoče spreminjati.

  • 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

Računanje in primerjanje ulomkov (racionalnih števil)

Z aritmetičnimi operaterji lahko izračunate seštevanje, odštevanje itd.

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

Uporabljajo se lahko tudi primerjalni operatorji.

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

Pretvarjanje ulomkov v decimalke (float)

S funkcijo float() lahko pretvorite ulomke v decimalna števila.

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

Kadar se izračuna z decimalnim številom, se samodejno pretvori v tip float.

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

Pretvorba ulomka v niz (str)

Za pretvorbo v niz uporabite funkcijo str().

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

Pridobite približek racionalnega števila

Približek racionalnega števila lahko dobite z metodo limit_denominator() tipa Fraction.

Vrne racionalno število (delež), katerega imenovalec je manjši ali enak argumentu max_denominator. Če je izpuščen, je max_denominator=1000000.

približevanje iracionalnim številom, kot sta pi in Napierjevo število 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

Pretvarjanje krožnih decimalk v ulomke

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