>
8
4
8
10
8
8
Real
Single
Double
Extended
Comp
Currency
15 ... 16
7 ... 8
15 ... 16
19 ... 20
19 ... 20
19 ... 20
5.0 * 10e-324 ... 1.7 * 10e308
1.5 * 10e-45 ... 3.4 * 10e38
5.0 * 10e324 ... 1.7 * 10e308
3.4 * 10-4951 ... 1.1 * 10e4932
-2e63 ... +2 e63-1
+/-922 337 203 +685477,5807
У попередніх версіях Delphi 1 ... 3 тип Real займав 6 байт і мав діапазон значень від 2,9 * 10-39 до 1,7 * 1038. У версіях 4 і 5 цей тип еквівалентний типу Double . Якщо потрібно (з метою сумісності) використовувати 6-байтних Real , потрібно вказати директиву компілятора {SREALCOMPATIBILITY ON}. p> Як видно з табл. 1.4, дійсне число в Object Pascal займає від 4 до 10 суміжних байт і має наступну структуру в пам'яті ПК.
Тут s - знаковий розряд числа; е - експоненціальна частина; містить двійковий порядок; m - мантиса числа.
Мантисса m має довжину від 23 (для single ) до 63 (для Extended ) двійкових розрядів, що й забезпечує точність 7 ... 8 для single і 19 ... 20 для Extended десяткових цифр. Десяткова крапка (кома) мається на увазі перед лівим (старшим) розрядом мантиси, але при діях з числом її положення зсувається вліво або вправо відповідно до двійковим порядком числа, що зберігаються в експоненційної частини, тому дії над речовими числами називають арифметикою з плаваючою крапкою (комою).
Зазначимо, що арифметичний співпроцесор завжди обробляє числа в форматі Extended , а три інших речових типу в цьому випадку виходять простим усіканням результатів до потрібних розмірів і застосовуються в основному для економії пам'яті.
Особливе становище в Object Pascal займають типи comp і Currency , які трактуються як речові числа з дробовими частинами фіксованою довжини: у comp дрібна частина має довжину 0 розрядів, тобто просто відсутня, в currency довжина дробової частини -4 десяткових розряду. Фактично обидва типи визначають велике ціле число зі знаком, що зберігає 19 ... 20 значущих десяткових цифр (у внутрішньому поданні вони займають 8 суміжних байт). У той же час у виразах comp і currency повністю сумісні з будь-якими іншими речовими типами: над ними визначені всі речові операції, вони можуть використовуватися як аргументи математичних функцій і т. д. Найбільш відповідною областю застосування цих типів є бухгалтерські розрахунки.
В
1.1.3 Тип дата-час
Тип дата-час визначається стандартним ідентифікатором TDateTime і призначений для одночасного зберігання та дати, і часу. У внутрішньому поданні він займає 8 байт і подібно currency представляє собою дійсне число з фіксованою дробової частиною: в цілій частині числа зберігається дата, в дробової - час. Дата визначається як кількість діб, що пройшли з 30 Грудень 1899, а час - як частину доби, що минули з 0 годин, так що значення 36444,837 відповідає даті 11.10.1999 і часу 20:05. Кількість доби може бути і негативним, проте значення менші -693594 (відповідає датою 00.00.0000 від Різдва Христового) ігноруються функціями перетворення дати до строкового типу.
Над даними типу TDateTime визначені ті ж операції, що і над речовими числами, а у виразах цього типу можуть брати участь константи і змінні цілого і речового типів.
Оскільки тип TDateTime сумісний з форматом дійсних чисел, можна без зусиль визначити дату, віддалену від заданої на скільки-то днів вперед або назад: для цього досить відповідно додати до заданої датою або відняти від неї потрібне ціле число.
В
1.2 Структуровані типи
Будь-який з структурованих типів (а в Object Pascal їх чотири: масиви, запису, множини і файли) характеризується множинністю які складають цей тип елементів. Кожен елемент, у свою чергу, може належати структурованого типу, що дозволяє говорити про можливу вкладеності типів. У Object Pascal допускається довільна глибина вкладеності типів, однак сумарна довжина будь-якого з них у внутрішньому представленні не повинна перевищувати 2 Гбайт [16-розрядні версії операційної системи Windows З.х використовують так звану "сегментну" модель пам'яті, тому в Delphi 1 будь структурований тип не може займати більше одного сегмента (65536 байт)].
З метою сумісності зі стандартним Паскалем в Object Pascal дозволяється перед описом структурованого типу ставити зарезервоване слово packed , приписуюче компілятору по можливості економити пам'ять, відведену під об'єкти структурованого типу; але компілятор фактично ігнорує це вказівка: "упаковка" даних у Object Pascal здійснюється автоматаческі скрізь, де це...