Речовий тип (float, double і long double) - студопедія

Стандарт C ++ визначає три типи даних для зберігання речових значень: float, double і long double.

Речові типи даних зберігаються в пам'яті комп'ютера інакше, ніж цілочисельні. Внутрішнє представлення дійсного числа складається з двох частин - мантиси і порядку. У IBM PC-сумісних комп'ютерах величини типу float займають 4 байта, з яких один двійковий розряд відводиться під знак мантиси, 8 розрядів під порядок і 23 під мантиссу.

Для величин типу double, що займають 8 байт, під порядок і мантиссу відводиться 11 і 52 розряду відповідно. Довжина мантиси визначає точність числа, а довжина близько - його діапазон.

Специфікатор long перед ім'ям типу doublе вказує, що під величину відводиться 10 байт.

Діапазон значень речових типів визначається за допомогою тестової програми, в якій слід якимось чином дізнатися значення наступних констант:

FLT_MIN ... FLT_MAX - діапазон типу float,

DBL_MIN ... DBL_MAX - діапазон типу double,

LDBL_MIN ... LDBL_MAX - діапазон типу long double.

Ці константи знаходяться в бібліотеці і слід переконатися, що вона підключена.

Константи з плаваючою точкою мають за замовчуванням тип double. Можна явно вказати тип константи за допомогою суфіксів F, f (float) і L, 1 (long). Наприклад, константа 2E + 6L матиме тип long doublе, а константа 1.82f - тип float.

У стандарті ANSI діапазони значень для основних типів не задаються, визначаються тільки співвідношення між їх розмірами, наприклад:

sizeof (float)

sizeof (char)

Різні види цілих і речових типів, що розрізняються діапазоном і точністю представлення даних, введені для того, щоб дати програмісту можливість найбільш ефективно використовувати можливості конкретної апаратури, оскільки від вибору типу залежить швидкість обчислень і обсяг пам'яті. Але оптимізована для комп'ютерів будь-якого одного типу програма може стати не переноситься на інші платформи, тому в загальному випадку слід уникати залежностей від конкретних характеристик типів даних.

Крім перерахованих, до основних типів мови відноситься тип void, але безліч значень цього типу порожньо. Він використовується для визначення функцій, які не повертають значення (такі функції в мові Паскаль називають процедурами, але в мові Сі процедур немає), для вказівки порожнього списку аргументів функції, як базовий тип для покажчиків і в операції приведення.