
laba2
.pdf
Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра безопасности информационных систем (БИС)
Вещественные числа. Ошибки при работе с вещественными числами
Отчет по лабораторной работе №2 по дисциплине «Языки программирования»
Выполнил:
Студент гр. 730-2
____Подойницын К.В.
04.04.2022
Принял:
Преподаватель кафедры КИБЭВС
Полюга В.А. 04.04.2022
Томск 2022
2
1 Введение
Цель работы: знакомство с основными ошибками, возникающими при
обработке вещественных чисел.

3
2 Ход работы
В данной работе описываются ошибки, возникающие при работе с вещественными числами (типы данных float и double). В качестве языка был выбран C++.
Исходные данные, рассчитанные вручную:
x = 20730267302.28052002
y = 2.073026730228052002
c = x + y = 20730267304.35
c1 = 20730267304.350000000
z = x + 10^(-8) = 20730267302.28
k = 20730267302
Исходные данные для вычислений в программе приведены на рисунке 1.
Рисунок 1 – Программные исходные данные.
Первая ошибка – исчезновение операнда. Ошибка возникает, когда один из операндов мал относительно другого. Ниже показан результат выражения «c = x + y» (рисунок 2).
Рисунок 2 – Исчезновение операнда.

4
Вторая ошибка – умножение ошибки. Многократное увеличение абсолютной погрешности операнда, которая может появиться при использовании арифметики с плавающей точкой, даже если относительная ошибка мала
(рисунок 3).
Вручную было рассчитано произведение: x * x = 4.29743982424 * 10^(20)
Предположим, при вычислении x была допущена ошибка, равная 10^(-8).
Следовательно, на выходе получаем и неверный результат, и умножение ошибки: z * z = 4.29743982423 * 10^(20)
На рисунке 3 представлены вычисления с помощью программы.
Рисунок 3 – Умножение ошибки.
Третья ошибка – полная потеря значимости, вызванная вычитанием почти равных чисел (рисунок 4).
В качестве примера возьмем выражение 987654321,2 – 987654321,1. При подсчете вручную ответ будет равняться 0,1. На рисунке 4 представлены результаты при подсчете с помощью программы.
Рисунок 4 – Потеря значимости.
Также были посчитаны абсолютная и относительная ошибки для типа данных float и double (рисунок 5).
Рисунок 5 – Вычисленные ошибки.
5
Заключение В ходе лабораторной работы были изучены основные ошибки, которые
возникают при обработке вещественных чисел, и написана программа,
демонстрирующая их. Для реализации программы был использован язык программирования C++.