Breuken (rationale getallen) berekenen met breuken

Bedrijf

Met behulp van de breukenmodule van de standaard Python-bibliotheek kunt u berekeningen met breuken (rationale getallen) uitvoeren.

Het volgende wordt hier uitgelegd.

  • Constructor van breuk
  • Verkrijg teller- en noemerwaarden als gehele getallen
  • Breuken berekenen en vergelijken (rationale getallen)
  • Breuken omzetten in decimalen (float)
  • Conversie van breuk naar tekenreeks (str)
  • Benadering van rationale getallen

Constructor van breuk

Er zijn verschillende manieren om een instantie van een breuk te maken. In alle gevallen wordt de breuk automatisch in breuken verdeeld.

Geef teller en noemer aan als gehele getallen

Geef de teller en de noemer op als gehele getallen, respectievelijk. Als de noemer wordt weggelaten, wordt deze geacht 1 te zijn.

from fractions import Fraction

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

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

print(Fraction(3))
# 3

decimale breuk (float)

Als een breukwaarde wordt doorgegeven, wordt deze omgezet in een breuk.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Indien u wenst te benaderen door een maximale noemer op te geven, gebruik dan de limit_denominator() methode die hieronder wordt beschreven.

tekenreeks (str)

Als een string-waarde wordt doorgegeven, wordt deze omgezet in een breuk.

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

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

Verkrijg teller- en noemerwaarden als gehele getallen

Attributen van het type breuk maken het mogelijk gehele waarden te verkrijgen voor respectievelijk de teller en de noemer. Zij kunnen niet worden gewijzigd.

  • 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

Breuken berekenen en vergelijken (rationale getallen)

Rekenkundige operatoren kunnen worden gebruikt voor optellen, aftrekken, enz.

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

Vergelijkingsoperatoren kunnen ook worden gebruikt.

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

Breuken omzetten in decimalen (float)

Kan van breuken naar decimalen converteren met float().

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

Wanneer gerekend wordt met een decimaal getal, wordt dit automatisch omgezet naar een float-type.

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

Conversie van breuk naar tekenreeks (str)

Om te converteren naar een string, gebruik str().

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

Benadering van rationale getallen

Een benadering van een rationaal getal kan worden verkregen met de methode limit_denominator() van het type Fraction.

Geeft als resultaat het rationale getal (breuk) waarvan de noemer kleiner is dan of gelijk is aan het argument max_denominator. Indien weggelaten, max_denominator=1000000.

Benader irrationele getallen zoals pi en het getal van 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

Zet ronde decimalen om in breuken

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