Рациональные числа. Класс Fraction
Содержание
- 1. Понятие рационального числа. Представление рациональных чисел. Класс Fraction
- 2. Создание объекта класса Fraction
- 3. Операции над рациональными числами. Примеры
- 4. Преимущества применения рациональных чисел. Пример
- 5. Метод as_integer_ratio(). Пример
- 6. Метод Fraction.from_float(). Пример
- 7. Метод float(). Пример
- Связанные темы
Поиск на других ресурсах:
1. Понятие рационального числа. Представление рациональных чисел. Класс Fraction
Рациональное число – это число, которое можно представить в виде рациональной дроби m/n, где m, n соответственно числитель и знаменатель которые имеют целочисленное значение. Например, в дроби 5/6 значение m = 5, значение n = 6.
В языке программирования Python для работы с рациональными числами предлагается класс Fraction. В классе соответствующим образом представлены числитель m и знаменатель n. В классе Fraction автоматически осуществляется упрощение дроби (например, 9/18 => 1/2).
Чтобы использовать возможности класса Fraction нужно предварительно подключить модуль fractions
from fractions import Fraction
⇑
2. Создание объекта класса Fraction
Объект класса Fraction можно создать одним из двух способов.
Способ 1. С помощью конструктора, который содержит целочисленные значения числителя и знаменателя.
Пример.
a = Fraction(5, 6) # a = 5/6 - рациональное число b = Fraction(8, 12) # b = 2/3 - рациональное число
В вышеприведенном примере в строке
b = Fraction(8, 12)
значение числителя 8 и знаменателя 12 переменной b будет автоматически упрощено к виду 2/3. То есть, числитель в классе равен 2, знаменатель равен 3.
Способ 2. С помощью конструктора, который получает строку с вещественным значением.
Пример.
a = Fraction('1.33') # a = 133/100 b = Fraction('3.719') # b = 3719/1000 c = Fraction('-1.5') # c = -3/2 d = Fraction('3.7') + Fraction('5.2') # d = 89/10
⇑
3. Операции над рациональными числами. Примеры
Над объектами класса Fraction можно выполнять следующие арифметические операции:
- сложение (+);
- вычитание (–);
- умножение (*);
- деление (/)
- взятие остатка от деления (%).
Примеры.
# Рациональные числа from fractions import Fraction a = Fraction(5, 6) + Fraction(3, 2) # a = 7/3 b = a - Fraction(3, 5) # b = 26/15 c = b * Fraction(101, 202) # c = 13/15 d = c / b # d = 1/2 e = d % a # e = 1/2
Операция возведения в степень числа типа Fraction возвращает вещественный результат
f = Fraction(1,2)**Fraction(1,2) # f = 0.7071067811865476
⇑
4. Преимущества применения рациональных чисел. Пример
Как известно, операции с вещественными числами имеют ограничение точности, которая зависит от возможностей аппаратных средств реализующих математику вещественных чисел. По сравнению с вещественными числами рациональные числа обеспечивают
- нужную точность вычислений;
- автоматическое упрощение результата.
Пример. В примере демонстрируется потеря точности для выражения 0.2+0.2+0.2-0.4.
# Рациональные числа, преимущества применения from fractions import Fraction a = 0.2+0.2+0.2-0.4 # a = 0.20000000000000007 - точность теряется b = Fraction('0.2')+Fraction('0.2')+Fraction('0.2')-Fraction('0.4') # b = 1/5 print('a = ', a) print('b = ', b)
Результат работы программы
a = 0.20000000000000007 b = 1/5
⇑
5. Метод as_integer_ratio(). Пример
Метод as_integer_ratio() возвращает числитель и знаменатель, который соответствует заданному числу. Общая форма вызова метода
(real_number).as_integer_ratio()
где
- real_number – число вещественного типа.
Метод используется для поддержки преобразования в рациональные числа.
Пример.
# метод as_integer_ratio from fractions import Fraction # преобразование в дробное число a = (3.5).as_integer_ratio() # a = (7, 2) b = (11.7).as_integer_ratio() # b = (3293257227514675, 281474976710656) # преобразование в тип Fraction a = 8.5 c = Fraction(*a.as_integer_ratio()) # c = 17/2
В вышеприведенном примере символ * означает синтаксис распаковывания кортежа на отдельные аргументы.
⇑
6. Метод Fraction.from_float(). Пример
Метод from_float() класса Fraction позволяет получить числитель и знаменатель вещественного числа также как и метод as_integer_ratio().
Пример.
# метод from_float класса Fraction from fractions import Fraction y = Fraction.from_float(2.25) # y = 9/4 x = 3.8 # тип float y = Fraction.from_float(x) # y = 4278419646001971/1125899906842624 x = -8.75 y = Fraction.from_float(x) # y = -35/4
⇑
7. Метод float(). Пример
Метод float() может получать объекты типа Fraction в качестве аргументов. Метод возвращает число типа float.
Пример.
# метод float() класса Fraction from fractions import Fraction # аргумент - переменная вещественного типа x = Fraction(11, 4) y = float(x) # y = 2.75 # аргумент - число y = float(Fraction(7,6)) # y = 1.1666666666666667
⇑
Связанные темы
- Представление чисел разных форматов. Базовые числовые типы. Функции преобразования чисел
- Числа с фиксированной точностью. Класс Decimal
⇑