4 Дійсний тип

Дійсні типи

Дійсних або речових типів всього три: float. double і long double:

Речові типи можуть бути представлені в такий спосіб:

(Для цього послужили значення деяких відомих фізичних констант).
Як видно з прикладу підтримуються дві форми запису: з фіксованою точкою (1, 2 і третій рядок) і Експоненціальна (інакше науковий формат або число з плаваючою точкою). Зверніть увагу на те, що для обох форм нульову дробову або цілу частину числа (для експоненційної форми - в мантисі) можна опустити (але не обидві одночасно!). Також можна опустити і саму точку, залишивши лише цілу частину числа. Але для поліпшення уявлення коду точку все ж опускати не слід. Для уявлення негативною речової константи використовується оператор «унарний мінус».

бібліотека cmath

Великий набір математичних функцій стає доступним, якщо підключити бібліотеку cmath. Деякі часто використовувані функції перераховані в методичке. Всі ці функції повертають тип відповідний типу аргументів. Функції, які беруть або повертають кут, працюють з радіанами (нагадую, що).
Вирішимо наступне завдання: По двох катетам прямокутного трикутника провести повний розрахунок параметрів трикутника. Знайти: гіпотенузу, радіуси вписаного та описаного кіл, площа і периметр.
програма 4.1

точність обчислень

Перетворення типу в арифметичних виразах

В арифметичних операціях з цілими числами відбувається неявне перетворення типу. Зважаючи на наявність знакових і беззнакових різновидів цілих типів перетворення буде відбуватися за такими правилами:

  1. будь-який арифметичний вираз, що включає в себе цілі операнди типів, менших ніж int. перед обчисленням перетворюються в int;
  2. підсумковий тип при обчисленнях повинен вміщати в себе діапазони всіх використовуваних в вираженні типів.

Це, наприклад, можна зобразити таким чином:
int + unsigned long => long long
Проілюструємо це на прикладі:
програма 4.2

Програма повинна скласти два числа, проте значення чисел є граничними для відповідних типів (long і unsigned long). В результаті в першому рядку відповідь невірний! У другому рядку передбачено такий результат. Створюється копія змінної, яка приводиться до типу, який має більший діапазон, тобто long long. Таке перетворення типів називається явним. Результат - правильний, але зверніть увагу, що програма продовжила роботу як ні в чому не бувало! Причина криється в уявленні цілих чисел в пам'яті комп'ютера.
Формат перетворення типу в програмі 4.2 є застарілою формою явного перетворення типу в стилі C, який існує до цих пір через сумісності.
Ще один спосіб перетворення - у вигляді виклику функції:

В С ++ рекомендується використовувати новий формат перетворення типів. Він виглядає наступним чином:

Зрозуміло, в виразах можуть бути присутнім як цілі, так і речові числа. Однак, потрібно пам'ятати, що результат обчислень буде завжди речовинний! Отже, необхідно використовувати будь-який дійсний тип змінної для збереження результату. Якщо для збереження використовується речовинний тип з меншим розміром, то станеться перетворення типу (з можливою втратою точності). Розглянемо докладніше на прикладі.
програма 4.3

Результат роботи програми:

Для того, щоб визначити розмір виведеного типу в програмі 4.3 використовується операція sizeof. Ця операція повертає розмір в байтах будь-якого об'єкта. У цій програмі ми наочно (за виведеному розміром) бачимо в який тип перетворюється вираз.

  1. Перерахуйте форми запису дійсних чисел.
  2. Чому в процесі обчислень з числами падає точність обчислень?
  3. Які дійсні типи вам відомі? Який тип найбільш точний при обчисленнях?
  4. Який тип даних ми отримаємо якщо ціле число розділимо на речовий? Речовий на ціле?
  5. Коли потрібно вибирати для обчислень цілий, а коли дійсний тип?

практичні завдання

1. Скласти програму. Дано довжини сторін трикутника a, b, c. Знайти довжини висот. Довжина висоти обчислюється за формулою:
, де S - площа трикутника (обчислюється за формулою Герона).
2. Скласти програму. За заданим величинам радіусів підстав r і R і висоти h знайти об'єм і площа поверхні усіченого конуса.

Посилання по темі