Читайте также:
|
|
При умножении и делении вещественных чисел процессор выполняет следующие действия:
¨ находит произведение (или частное от деления) мантисс
¨ вычисляет сумму (разность) порядков операндов
¨ нормализует мантиссу результата, если это необходимо
¨ выполняет соответствующую корректировку порядка результата, если это необходимо.
Операции сложения и вычитания
При сложении и вычитании вещественных чисел процессор выполняет следующие действия:
¨ выравнивание мантисс, т.е. сдвиг мантиссы числа с меньшим порядком на число разрядов, равное разности порядков
¨ вычисляет сумму (разность) мантисс операндов
¨ определяет порядок результата как больший из порядков операндов
¨ нормализует мантиссу результата, если это необходимо
¨ выполняет соответствующую корректировку порядка результата, если это необходимо.
Количество цифр в мантиссе – точность представления числа. Из-за ограниченности разрядов под представление мантиссы и порядка числа при умножении и делении, сложении и вычитании вещественных чисел, их сравнении на точное равенство возможно возникновение некоторых особых (исключительных) ситуаций, как последствий действий процессора:
· ошибки округления – «выход» значения мантиссы за разрядную сетку (в случае произведения мантисса содержит больше разрядов, чем допустимо внутренним представлением данных соответствующего типа, поэтому часть младших разрядов произведения в память не записывается; при делении операция выполняется до получения нулевого промежуточного частного или до заполнения бит мантиссы результата);
· ошибки переполнения – «выход» значения порядка за разрядную сетку;
· машинный нуль – получение числа с ненулевой мантиссой и порядком меньшим, чем минимальный порядок в данном типе; иногда для характеристики такой ситуации употребляют выражение «обособленное представление 0»;
· катастрофическая потеря порядка, к которой приводит в ряде случаев ситуация появления «машинного нуля»;
· потеря значащих цифр.
Указанные особые ситуации нужно отслеживать и специально обрабатывать в программе.
Особые ситуации
Ошибки округления
Пусть для представления вещественного числа выделено 3 разряда под мантиссу и 2 под порядок. Тогда при умножении двух чисел 0.123*1002 и 0.161*1005 имеем:
0.123*1002 * 0.161*1005 = 0.019803*1007 = 0.198*1006 = 198000 (вместо ожидаемого 198030), т.е. имеем ошибку округления.
Как следствие, надо помнить, что для вещественных чисел X и Y значения выражений X и X*Y/Y не равны. Например:
0.111*1000*0.223*1001/0.223*1001=0.025*1001/0.223*1001=0.25*1000/0.223*1001= 1.121*10-01 = 0.112*1000.
Дата добавления: 2015-07-08; просмотров: 118 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Замечания по программированию алгебраических выражений | | | Ошибки переполнения |