Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в программирование и ЭВМ, 1 лекция.docx
Скачиваний:
4
Добавлен:
04.11.2018
Размер:
40.34 Кб
Скачать
  1. Запись результата

Результат записывается в порядке: <знак><характеристика><мантисса>

Округление вещественных чисел

Округление возникает тогда, когда результат требует большей точности, чем позволяет представление чисел. Метод округления определяет, какое число выбирается в качестве результата.

При работе с вещественными числами округление числа используется после каждой операции в любом вещественном представлении. Число округляется к ближайшему возможному представлению. Если же число находится точно посередине между двумя ближайшими представлениями, то оно округляется к тому из них, которое четное.

Ведь если в спорных ситуациях округлять всегда вверх (или вниз), то возникнет постепенный рост числа (или его уменьшение), а при округлении к четному, округление вверх или вниз выполняются примерно равное число раз.

Пример (с комментарием от Скакова П.С.):

~5.101 = 101.00011010

5.1 = 101.00011001100110011...

~5.098 = 101.00011001

Под чётностью понимается место округления, а не какая-то абстрактная целая часть числа. То есть в данном примере граничные числа 519 (10100011001) и 520 (10100011010).

Кроме того, правило "к чётному" применяется, только когда мы находимся точно посередине, когда невозможно найти ближайшее, что очевидно не так в приведённом примере: здесь мы находимся ближе к большему числу и округлять надо вверх.

Сумма всех разрядов младших данного стремится к данному значению: 10…~= 0111111… поэтому нужно смотреть на разряды, которые не вошли в мантиссу:

  1. Если первый не вошедший разряд – 1 и из остальных разрядов хотя бы один больше нуля, то очевидно, округлять надо в большую сторону

  2. Если первый не вошедший разряд – 1 и остальные разряды равны нулю, то очевидно, что это ровно половина и округлять его надо к четному

  3. Если первый не вошедший разряд – 0, то значение остальных разрядов неважно, они будут меньше половины и должны быть отброшены.

Именно из-за округления результата после каждой операции .

Ссылки по теме

http://habrahabr.ru/blogs/cpp/112953/ – про операции над числами с плавающей точкой.

Страница 8