Изчисляване на дроби (рационални числа) с дроби

Бизнес

С помощта на модула за дроби от стандартната библиотека на Python можете да извършвате изчисления с дроби (рационални числа).

Тук е обяснено следното.

  • Конструктор на Fraction
  • Получаване на стойностите на числителя и знаменателя като цели числа
  • Изчисляване и сравняване на дроби (рационални числа)
  • Превръщане на дроби в десетични дроби (float)
  • Превръщане на дроб в низ (str)
  • Получаване на приближение на рационално число

Конструктор на Fraction

Има няколко начина за създаване на екземпляр на фракция. Във всички случаи дробта се разделя автоматично на части.

Задайте числителя и знаменателя като цели числа

Посочете числителя и знаменателя съответно като цели числа. Ако знаменателят е пропуснат, се приема, че той е 1.

from fractions import Fraction

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

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

print(Fraction(3))
# 3

десетична дроб (float)

Ако е подадена дробна стойност, тя се преобразува в дроб.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Ако искате да направите приближение, като посочите максимален знаменател, използвайте метода limit_denominator(), описан по-долу.

символен низ (str)

Ако е подадена стойност в низ, тя се преобразува в дроб.

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

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

Получаване на стойностите на числителя и знаменателя като цели числа

Атрибутите от тип Fraction позволяват да се получат целочислени стойности съответно за числителя и знаменателя. Те не могат да бъдат променяни.

  • 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

Изчисляване и сравняване на дроби (рационални числа)

Аритметичните оператори могат да се използват за изчисляване на събиране, изваждане и т.н.

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

Могат да се използват и оператори за сравнение.

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

Превръщане на дроби в десетични дроби (float)

Може да преобразува дробни числа в десетични с помощта на float().

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

Когато се изчислява с десетично число, то автоматично се преобразува в тип float.

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

Превръщане на дроб в низ (str)

За да превърнете символа в низ, използвайте функцията str().

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

Получаване на приближение на рационално число

Апроксимация на рационално число може да се получи с метода limit_denominator() от тип Fraction.

Връща рационалното число (дроб), чийто знаменател е по-малък или равен на аргумента max_denominator. Ако е пропуснат, max_denominator=1000000.

Приблизително определяне на ирационални числа, като Пи и числото на Напие 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

Превръщане на кръгли десетични дроби в дроби

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