Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 5 Основные типы данных v1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
920.06 Кб
Скачать

5.2.2. Вещественные типы

Значениями вещественных типов являются числа с плавающей точкой (ПТ), представленные в виде мантиссы и порядка.

Например,

В общем случае числа с ПТ представляются неточно, операции над ними выполняются по правилам действий над приближенными числами.

Поэтому множества значений вещественных типов в Delphi не обладают свойством упорядоченности (перенумерованности).

Вещественные константы

Вещественные константы в программе могут быть записаны в форме числа с фиксированной точкой (ФТ) или числа с ПТ.

В форме с ФТ запись константы состоит из целой и дробной частей, разделенных точкой. Знак необязателен.

Примеры записи вещественных чисел в форме с ФТ:

0.25 -2.48 +31.0

Наличие точки в вещественной константе обязательно.

В форме с ПТ константа задается в виде десятичной мантиссы m и десятичного порядка p с необязательными знаками, между которыми помещается символ E (или e):

mEp или mep

Мантисса m представляется целой или вещественной константой с ФТ. Порядок – целое десятичное число, определяющее истинное положение запятой в константе:

Примеры записи вещественных констант в форме с ПТ иллюстрирует таблица 5.7.

Таблица 5.7. Запись вещественных чисел в формате с плавающей точкой

Представление числа

Значение числа

14.3E5

14,3*105

681E-2

681*10–2

-5.16E-3

-5,16*10–3

Вещественные типы и их представление в компьютере

Существует семь вещественных типов для представления переменных:

  • Real (вещественный);

  • Single (с одинарной точностью);

  • Real48 (вещественный длиной 6 байт (48 бит));

  • Double (с двойной точностью);

  • Extended (с повышенной (расширенной) точностью);

  • Comp (сложный тип);

  • Currency (денежный (распространенный)).

Из данных типов, Real относится к обобщенным типам, остальные – к фундаментальным.

Данные типы различаются диапазоном и точностью представления связанных с ними значений (таблица 5.8).

Таблица 5.8 – Диапазоны и точности представления вещественных данных

Тип

Диапазон

Точность (разрядность мантиссы)

Разряд- ность

порядка

(бит)

Формат (байт)

бит

десятич- ных цифр

Real

≈10±308

53 *

15 ÷ 16

11

8**

Single

≈10±38

24 *

7 ÷ 8

8

4

Real48

≈10±38

40 *

11 ÷12

8

6

Double

≈10±308

53 *

15 ÷ 16

11

8

Extended

≈10±4932

64

19 ÷ 20

15

10

Comp

– 263 ÷ 263 – 1 ≈10±19 (–9223372036854775808 ÷ 9223372036854775807)

63

19 ÷ 20

-

8

Currency

≈10±15 (–922337203685477.5808 ÷ 922337203685477.5807)

63

19 ÷ 20

-

8

Примечания.

*) – включая скрытый (неявный) бит F0 (старший бит мантиссы, который при передачах чисел и хранении их в памяти отсутствует, т.к. его значение в нормализованных числах равно 1 – для всех чисел, кроме числа нуль). В значениях типа Extended F0 хранится явно.

**) – количество байтов памяти, требуемых для хранения переменных обобщенного типа Real, приведено для 32-разрядных микропроцессоров.

Нормализованным числом называется число, мантисса которого попадает в диапазон

где q – основание системы счисления. Для 2СС

то есть нормализованная мантисса представляет собой правильную дробь с единицей в старшем двоичном разряде. Например, нормализованные мантиссы могут принимать значения

0.1101 0.1000 0.1111

Представление вещественных чисел в памяти компьютера иллюстрирует рисунок 5.9.

Рисунок 5.9 - Представление вещественных чисел в памяти компьютера

Значение числа равно

Здесь mдв – значение двоичного кода мантиссы, р – значение двоичного кода порядка.

В различных микропроцессорах поля мантиссы и порядка могут меняться местами. Однако для дальнейшего изложения материала это не имеет значения.

Вещественные типы различаются разрядностью поля мантиссы (nm) и поля порядка (np).

Мантисса, независимо от знака, хранится в прямом двоичном коде. Порядок хранится в виде характеристики – это двоичный код порядка, представленный с избытком (смещением):

Например, для типа Single смещение равно 127, для типа Double – 1023, для типа Extended – 16383.

Характеристика определяется выражением:

Характеристика = порядок + смещение.

Таким образом, формат вещественного числа в битах (занимаемая им область памяти) определяется выражением:

Пример 5.6.

Представление числа Х = –0,375 типа Single в памяти компьютера.

Представление числа Х в виде мантиссы и порядка:

Таким образом, m = –0.011, p = 0.

Порядок представляется в виде характеристики: 0 + 127 = 127.

Представление числа Х в виде мантиссы и характеристики:

После нормализации мантиссы:

Таким образом, с учетом представления характеристики в двоичном коде, а так же скрытого бита мантиссы число –0,375 типа Single в памяти компьютера будет представлено так, как иллюстрирует рисунок 5.10.

Рисунок 5.10 – Внутреннее представление числа -0,375

Сложный тип Comp по существу является не вещественным типом с ПТ, а длинным целым типом двойной точности. В памяти машины он занимает формат 8 байт (64 бита) и обеспечивает диапазон представления чисел

Тип Currency является не вещественным типом с ПТ, а вещественным типом с ФТ, состоящим из целой и дробной части. В памяти машины тип Currency занимает формат 8 байт (64 бита), что соответствует возможности представления (19÷20)-разрядных десятичных чисел. Из данного количества разрядов 4 разряда соответствует дробной части числа.

Хотя типы Comp и Currency не являются вещественными типами с ПТ, в выражениях данные типы совместим с другими вещественными типами (над ним определены все вещественные операции и встроенные функции, что и над остальными вещественными типами).

Использование всех вещественных типов, кроме Real возможно только при наличии сопроцессора при включенной опции компилятора {$N+} (сопроцессор математических вычислений; глобальная опция) или при включенной опции {$E+} (полная программная эмуляция работы сопроцессора в случае его отсутствия; локальная опция). Последний режим очень медленный, поэтому его использование без необходимости нежелательно.

По умолчанию установлены состояния {$N–} и {$E–}.

Если сопроцессор отсутствует, все вычисления с вещественными числами выполняются программно. Поэтому из-за соображений скорости рекомендуется использовать переменные типа Real.

Объявление переменных вещественных типов

Переменные вещественных типов объявляются в разделе описаний переменных программы.

Например,

Var

a, b, c: real;

d, e: single;

Операции над вещественными данными

Для значений вещественных типов определены следующие операции.

  1. Арифметические операции:

а) одноместные

+ (сохранение знака);

– (изменение знака);

б) двухместные

+ (сложение);

– (вычитание);

* (умножение);

/ (деление).

Арифметические операции над значениями вещественных типов дают тип результата Extended.

  1. Операции сравнения:

= (равно);

<> (не равно);

>= (больше или равно);

> (больше);

<= (меньше или равно);

< (меньше).

Операции сравнения дают логический тип результата.

Операции сравнения на точное равенство и неравенство (=, <>) над вещественными числами определены, но их лучше не использовать, т.к. для обработки вещественных чисел используется приближенная арифметика с ПТ.

Например, при выполнении цикла по условию X<>Y может оказаться, что за счет погрешности вычислений X никогда не станет равным Y, хотя логика программы будет верной. Поэтому программа не осуществит выход из цикла.

Встроенные функции, определенные над вещественными данными

Над данными вещественных типов определен ряд встроенных функций, основные из которых представляет таблица 5.9.

Таблица 5.9 – Встроенные функции, определенные над вещественными данными

Функция

Описание

Тип результата

Round(х)

Округление, результат – ближайшее к х целое. Если дробная часть х равна 0,5, то округление выполняется до ближайшего четного целого числа ("округление банкира")

Int64

Trunc(х)

Возвращает целую часть числа х

Int64

Int(х)

Возвращает целую часть х

Extended

Frac(х)

Возвращает дробную часть х

Extended

Abs(х)

Абсолютная величина х

Extended

Arctan(х)

arctg(х). Результат в радианах.

Extended

Cos(х)

cos(х). х – в радианах

Extended

Sin(х)

sin(х). х – в радианах

Extended

Exp(х)

(экспонента; е в степени х)

Extended

Ln(х)

ln(х)

Extended

Sqr(х)

Extended

Sqrt(х)

(квадратный корень из x)

Extended

Random

Возвращает случайное вещественное число в диапазоне 0 <= х < 1

Extended

Sizeof(х)

Количество байтов для представления вещественного значения

целочисленный

Существует стандартная вещественная константа:

Pi = 3.1415926536E+00,

тип которой - Extended. Обращение к данной константе в программе может осуществляться просто по имени Pi.

В состав среды Delphi входит стандартный модуль Math, который содержит подпрограммы для тригонометрических, логарифмических, статистических и финансовых вычислений.