Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2- Введение в программирование.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
753 Кб
Скачать
☆

Вещественный тип

В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и представляются в компьютере абсолютно точно, значения вещественных типов определяют произвольное число лишь с некоторой точностью, зависящей от внутреннего формата вещественного числа. Существуют следующие вещественные типы.

Название

Длина, байт

Кол-во значащих цифр

Диапазон десятичного порядка

Real

6

11...12

-39...+38

Single

4

7...8

-45…+38

Double

8

15...16

-324...+308

Extended

10

19...20

-4932...+4932

Comp

8

19...20

-9.2*10+18…9.2*1018 (-263…(263-1))

(диапазон значений)

Вещественное число в ТР может занимать от 4 до 10 смежных байт и имеет следующую структуру в памяти компьютера:

s

е

m

Здесь s – знаковый разряд числа (один двоичный разряд), е – экспоненциальная часть (содержит порядок в двоичном представлении), m – мантисса числа (в двоичном представлении). Мантисса имеет длину от 23 (для Single) до 63 (для Extended) двоичных разрядов, что обеспечивает ту точность в десятичных цифрах, которая обозначена в таблице.

Вещественные значения могут записываться обычным способом с десятичной точкой (Х := -0.009), а также в экспоненциальном формате (Y := 123.4e-23). Если присутствует десятичная точка, за ней и перед ней д.б. хотя бы одна цифра. Если есть символ е - за ним д.б. хотя одна цифра.

Несмотря на большое разнообразие вещественных типов, все они кроме Real вводятся в расчете на арифметический сопроцессор – устройство, которое подключается непосредственно к центральному процессору и предназначен для выполнения операций над числами в формате с плавающей точкой и длинными целыми числами. Сопроцессор значительно (в десятки раз) ускоряет вычисления, связанные с вещественными числами. В процессорах, начиная с 80486 он встроен. Сопроцессор всегда обрабатывает числа в формате Extended (наиболее мощном). При этом остальные вещественные типы получаются простым усечением результатов до нужных размеров, что применяется в основном для экономии памяти. Т.е. если

Var

e1,e2 : Extended;

e3 : Double;

result : Single;

. . .

result := e1*e2/e3;

то значение выражения справа будет вычислено как тип Extended. Но при присваивании его переменной result меньшей мощности Single будет произведено усечение и значительно уменьшится число значащих цифр после десятичной точки.

Тип Real оптимизирован на работу без сопроцессора, поэтому его использование при наличии сопроцессора будет крайне неэффективно (время, «съедаемое» на преобразование его в сопроцессорный тип, перекрывает ускорение, а точности при этом не добавляется). Поэтому, если предполагается использовать разработанную программу на разных компьютерах (с сопроцессором и без него), целесообразно ввести свой вещественный тип (например, Float), и с помощью него описать все переменные. Конкретный тип, которому соответствует Float, зависит от наличия сопроцессора.

Type

Float = Real; {без сопроцессора}

Float = Double; {с сопроцессором}

Var

X : Float;

Y : array [1..9] of Float;

Чтобы программа могла задействовать возможности сопроцессора она должна иметь в своем начале директиву (ключ компилятора) $N+. Однако даже если в компьютере нет сопроцессора, ТР дает возможность эмулировать его работу программным путем. Т.е. можно создать программу, которая будет работать с вещественными числами большой точности, независимо от наличия сопроцессора. Это достигается существенными потерями в скорости счета. Включением эмуляции управляет ключ компилятора $E.

Особое место занимает тип Comp. Он трактуется как вещественное число без экспоненциальной и дробной части. Фактически, Comp – это «большое» целое число со знаком, сохраняющее 19…20 значащих цифр. В то же время тип Comp полностью совместим с любыми другими вещественными типами, над ним определены все вещественные операции и т.д. Наиболее подходящей областью применения являются бухгалтерские операции, когда денежные суммы выражаются в целых рублях (копейках), а действия над ними могут привести к очень длинным целым числам.

В ТР имеется набор стандартных процедур и функций, которые работают с вещественными и целыми данными.