Вещественные типы
Чтобы получить правильный результат (например, для типа REALTYPE = REAL он будет 9. 09494701772928Е-0013), программу необходимо изменить следующим образом:
{$N+,E+}
type
RealType= Real;
var
epsilon, epsl:RealType;
begin
epsilon: = 1;
repeat
epsilon: = epsilon/2;
epsl: = 1 + epsilon
until epsl = 1;
WriteLn(2*epsilon)
end.
Следует учесть, что тип REAL оптимизирован для работы без сопроцессора. Если Ваш ПК оснащен сопроцессором, использование типа REAL приведет к дополнительным затратам времени на преобразование REAL к EXTENDED. Поэтому никогда не используйте REAL на ПК с сопроцессором, т.к. дополнительные затраты времени на преобразование типов могут свести на нет все преимущества сопроцессора.
При разработке программ, критичных ко времени счета, следует заменять его типами SINGLE или DOUBLE: по сравнению с типом REAL скорость вычислений на машинах с сопроцессором в этом случае увеличивается в 2…3 раза. Если в ПК нет арифметического сопроцессора, скорость обработки данных всех вещественных типов приблизительно одинакова.
Особое положение в Турбо Паскале занимает тип СОМР, который трактуется как вещественное число без экспоненциальной и дробной частей. Фактически, СОМР – это "большое" целое число со знаком, сохраняющее 19…20 значащих десятичных цифр (во внутреннем представлении СОМР занимает 8 смежных байт). В то же время в выражениях СОМР полностью совместим с любыми другими вещественными типами: над ним определены все вещественные операции, он может использоваться как аргумент математических функций и т.д. Наиболее подходящей областью применения типа СОМР являются бухгалтерские расчеты: денежные суммы выражаются в копейках или центах и действия над ними сводятся к операциям с достаточно длинными целыми числами.
Для работы с вещественными данными могут использоваться встроенные математические функции, представленные в табл. 2.5. В этой таблице REAL означает любой вещественный тип, INTEGER – любой целый тип.
Таблица 4.5. Стандартные математические функции Турбо Паскаля.
| Обращение | Тип параметра | Тип результата | Примечание |
|---|---|---|---|
| abs (x) | Real, Integer | Тип аргумента | Модуль аргумента |
| АrсТаn (х) | Real | Real | Арктангенс (значение в радианах) |
| cos (х) | To же | То же | Косинус, угол в радианах |
| ехр (х) | " | " | Экспонента |
| frас (х) | " | " | Дробная часть числа |
| int(x) | " | " | Целая часть числа |
| ln(x) | " | " | Логарифм натуральный |
| Pi | " | π = 3.141592653… | |
| Random | " | Псевдослучайное число, равномерно распределенное в диапазоне 0…[1] | |
| Pandom(x) | Integer | Integer | Псевдослучайное целое число, равномерно распределенное в диапазоне 0…(х-1) |
| Randomize | Инициация генератора псевдослучайных чисел | ||
| sin(x) | Real | Real | Синус, угол в радианах |
| sqr (x) | To же | То же | Квадрат аргумента |
| sqrt (x) | " | " | Корень квадратный |
