Значения особых случаев.
При выполнении арифметических операций над числами с плавающей точкой иногда
возникают ошибочные условия или особые случаи. Самым известным из них является
деление на нуль, но существуют и другие. Ниже дан список тех видов численных
особых случаев, которые могут возникать в процессоре 80287, упорядоченный по
степени тяжести их последствий. Неточный результат.
Это условие возникает, когда результат операции невозможно точно представить
в формате приемника. Например, при делении 1.0 на 3.0 получается бесконечная
двоичная дробь 0.0101010101, которую невозможно точно представить ни в одном
формате с плавающей точкой. Такая же ситуация возникает, если число с двойной
точностью 9.87654321 преобразуется в формат числа с одинарной точностью, не
имеющий разрядов для всех девяти значащих цифр. Большинство пользователей не
должно считать неточный результат ошибкой, а полагать, что имеет место
автоматическое округление или усечение.
Численное антипереполнение. Как мы уже говорили, эта ситуация возникает,
когда ненулевой результат по абсолютной величине слишком мал для представления,
т.е. когда он слишком близок к нулю. Примером служит результат деления 1.0 на
наибольшее число с расширенной точностью.
Другой пример - преобразование наименьшего положительного числа с расширенной
точностью в число с двойной точностью. Применение расширенной точности для всех
промежуточных результатов делает этот особый случай маловероятным.
Деление на нуль. Особый случай деления на нуль возникает, когда ненулевое
число делится на нуль.
Численное переполнение. Как уже говорилось, этот особый случай возникает,
когда результат слишком велик по абсолютной величине, чтобы быть представленным
в формате приемника. Примерами служат сложение наибольшего числа с расширенной
точностью с самим собой или преобразование такого числа в число с двойной
точностью. Как и антипереполнение, этот особый случай маловероятен при
использовании для всех промежуточных результатов расширенной точности.
Недействительная операция.
Особый случай недействительной операции включает в себя все, что осталось,
например деление 0 на 0, извлечение корня квадратного из отрицательного числа
или попытку использовать несуществующий регистр процессора 80287. Еще один
особый случай денормализованного операнда мы рассмотрим позже.