Вещественные типы
Чтобы получить правильный результат (например, для типа 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) | " | " | Корень квадратный |