1

При изучении точности в арифметике с плавающей запятой и различных методах ее избежать (с использованием сопряженной, серии Тейлора, ...) в книгах часто упоминается вычитание двух очень похожих чисел или один большой и один маленький номер, как самая большая причина ошибки. Почему это только вычитание вызывает это, а не дополнение? Как я вижу, вы все равно потеряете столько же значительных бит, сколько и сдвигаетесь.Дополнение к вычитанию при потере значимости с плавающей запятой

ответ

1

При вычитании двух почти равных чисел разность будет иметь меньше значащих бит, чем исходные числа. Десятичный пример:

1.23456789 9 significant digits 
-1.23456785 9 significant digits 
─────────── 
      4 1 significant digit 
1

Там нет никакой разницы между сложением или вычитанием, вычитание сложение с инвертированным операндом. Вы правы, чтобы добавить или вычесть, вам нужно сдвинуть число с меньшей экспонентой в ведро бит, чтобы выполнить операцию, в результате чего меньшее количество значимых бит для этого операнда. Если показатели больше, чем размер мантиссы, то сложение или вычитание, в результате получится число с большим показателем, все биты меньшего числа смещены в ведро бит N + 0 = N - 0.

Смежные вопросы