4 Дійсний тип
Дійсні типи
Дійсних або речових типів всього три: float. double і long double:
Речові типи можуть бути представлені в такий спосіб:
(Для цього послужили значення деяких відомих фізичних констант).
Як видно з прикладу підтримуються дві форми запису: з фіксованою точкою (1, 2 і третій рядок) і Експоненціальна (інакше науковий формат або число з плаваючою точкою). Зверніть увагу на те, що для обох форм нульову дробову або цілу частину числа (для експоненційної форми - в мантисі) можна опустити (але не обидві одночасно!). Також можна опустити і саму точку, залишивши лише цілу частину числа. Але для поліпшення уявлення коду точку все ж опускати не слід. Для уявлення негативною речової константи використовується оператор «унарний мінус».
бібліотека cmath
Великий набір математичних функцій стає доступним, якщо підключити бібліотеку cmath. Деякі часто використовувані функції перераховані в методичке. Всі ці функції повертають тип відповідний типу аргументів. Функції, які беруть або повертають кут, працюють з радіанами (нагадую, що).
Вирішимо наступне завдання: По двох катетам прямокутного трикутника провести повний розрахунок параметрів трикутника. Знайти: гіпотенузу, радіуси вписаного та описаного кіл, площа і периметр.
програма 4.1
точність обчислень
Перетворення типу в арифметичних виразах
В арифметичних операціях з цілими числами відбувається неявне перетворення типу. Зважаючи на наявність знакових і беззнакових різновидів цілих типів перетворення буде відбуватися за такими правилами:
- будь-який арифметичний вираз, що включає в себе цілі операнди типів, менших ніж int. перед обчисленням перетворюються в int;
- підсумковий тип при обчисленнях повинен вміщати в себе діапазони всіх використовуваних в вираженні типів.
Це, наприклад, можна зобразити таким чином:
int + unsigned long => long long
Проілюструємо це на прикладі:
програма 4.2
Програма повинна скласти два числа, проте значення чисел є граничними для відповідних типів (long і unsigned long). В результаті в першому рядку відповідь невірний! У другому рядку передбачено такий результат. Створюється копія змінної, яка приводиться до типу, який має більший діапазон, тобто long long. Таке перетворення типів називається явним. Результат - правильний, але зверніть увагу, що програма продовжила роботу як ні в чому не бувало! Причина криється в уявленні цілих чисел в пам'яті комп'ютера.
Формат перетворення типу в програмі 4.2 є застарілою формою явного перетворення типу в стилі C, який існує до цих пір через сумісності.
Ще один спосіб перетворення - у вигляді виклику функції:
В С ++ рекомендується використовувати новий формат перетворення типів. Він виглядає наступним чином:
Зрозуміло, в виразах можуть бути присутнім як цілі, так і речові числа. Однак, потрібно пам'ятати, що результат обчислень буде завжди речовинний! Отже, необхідно використовувати будь-який дійсний тип змінної для збереження результату. Якщо для збереження використовується речовинний тип з меншим розміром, то станеться перетворення типу (з можливою втратою точності). Розглянемо докладніше на прикладі.
програма 4.3
Результат роботи програми:
Для того, щоб визначити розмір виведеного типу в програмі 4.3 використовується операція sizeof. Ця операція повертає розмір в байтах будь-якого об'єкта. У цій програмі ми наочно (за виведеному розміром) бачимо в який тип перетворюється вираз.
- Перерахуйте форми запису дійсних чисел.
- Чому в процесі обчислень з числами падає точність обчислень?
- Які дійсні типи вам відомі? Який тип найбільш точний при обчисленнях?
- Який тип даних ми отримаємо якщо ціле число розділимо на речовий? Речовий на ціле?
- Коли потрібно вибирати для обчислень цілий, а коли дійсний тип?
практичні завдання
1. Скласти програму. Дано довжини сторін трикутника a, b, c. Знайти довжини висот. Довжина висоти обчислюється за формулою:
, де S - площа трикутника (обчислюється за формулою Герона).
2. Скласти програму. За заданим величинам радіусів підстав r і R і висоти h знайти об'єм і площа поверхні усіченого конуса.