Рациональный тип данных
Рациональный тип данных — способ представления рациональных чисел, используемый в программировании[1]. Рациональные числа в ЭВМ представляются таким образом, чтобы отдельно хранить числитель числа, а отдельно знаменатель числа, что позволяет избежать проблему округления чисел при выполнении математических операций, как это бывает при использовании переменных, хранимых в форме с плавающей запятой или фиксированной запятой[2]. Математические операции над рациональными числами моделируются программно[3][4]. В некоторых языках программирования для подключения возможности работы с рациональными числами используются модули, в которых реализована работа с рациональными числами и которые позволяют работать с числами, представленными в других формах[5].
Пример хранения
Например, в ЭВМ необходимо работать с рациональным числом: Шаблон:Center
Для его хранения выделяется отдельная область памяти для хранения числителя , отдельно для знаменателя . При работе с рациональным числом отдельно работают с числителем, отдельно с знаменателем, при этом точность вычисления не теряется, как происходит при хранении чисел с плавающей запятой[3].
Пример работы с рациональными числами на языке Python
from fractions import Fraction # Подключение функции Fraction для использования
n1=Fraction(1,3) # Рациональное число 1/3
n2=Fraction(2,3) # Рациональное число 2/3
n3=1/3 # Вещественное число 1/3
r1=n1+n2 # Математическая операция на множестве рациональных чисел
r2=n1+2 # Математическая операция на множестве рациональных и целых чисел
print("Ответ:",r1)
>> Ответ: 1
print("Ответ:",r2)
>> Ответ: 7/3
print("Ответ:",n3)
>> Ответ: 0.3333333333333333
См. также
Примечания
Литература
- Эльвира Опалева, Владимир Самойленко. Языки программирования и методы трансляции. — СПб.: БХВ-Петербург, 2005. — 480 с. — ISBN 5-94157-327-8.
Ссылки
- Rational numbers — рациональные числа на языке Phyton
- Rational — рациональные числа на языке LISP
- Rational Numbers — рациональные числа на языке Haskell
- Rational Structure — рациональные числа в пространстве имен Microsoft.SolverFoundation.Common Microsoft FrameWork