Числа с плавающей точкой    

Числа с плавающей точкой    

   Числа с плавающей точкой более или менее соответствуют тому, что математики называют "вещественными числами". Они включают в себя числа, расположенные между целыми. Вот некоторые из них: 2.75, 3.16Е7, 7.00 и 2е-8. Очевидно, что любое число с плавающей точкой можно записать несколькими способами. Более полное обсуждение "Е-нотации" будет проведено дальше, а мы только кратко поясним, что запись вида "3.16Е7" означает число, полученное в результате умножения 3.16 на 1,0 в седьмой степени, т. е. на 1 с семью нулями. Число 7 называется "порядком" (показателем степени при основании 10).

     Наиболее существенным моментом здесь является то, что способ кодирования, используемый для помещения в память числа с плавающей точкой, полностью отличается от аналогичной схемы для размещения целого числа. Формирование представления числа с плавающей точкой состоит в его разбиении на дробную часть и порядок; затем обе части раздельно помещаются в память. Поэтому число 7.00 из вышеприведенного списка нельзя поместить в память тем же способом, что и целое число 7, хотя оба имеют одно и то же значение. В десятичной записи (точно так же как и в двоичной) число "7.0" можно было бы записать в виде "0.7Е1"; тогда "0.7" будет дробной частью, а "1" - порядком. Для размещения чисел в памяти машины будут, конечно, использоваться двоичные числа и степени двойки вместо степеней десяти. Дополнительную информацию, относящуюся к этому вопросу, вы сможете найти в приложении Ж. Здесь же мы остановимся лишь на различиях, связанных с практическим использованием чисел этих двух типов.

     1. Целые числа не имеют дробной части, в то время как числа с плавающей точкой могут представлять как целые, так и дробные числа.

     2. Числа с плавающей точкой дают возможность представлять величины из более широкого диапазона, чем целые (см. табл. 3.1).

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

     4. Операции над числами с плавающей точкой выполняются, как правило, медленнее, чем операции над целыми числами. Однако сейчас уже появились микропроцессоры, специально ориентированные на обработку чисел с плавающей точкой, и в них эти операции выполняются довольно быстро.

  

                                    РИС. 3.3. Десятичное представление числа p в формате с плавающей точкой.

     Возьмите некоторое число. Добавьте к нему 1, а затем вычтите из полученной суммы исходное число. Что у вас получится? У нас получилась 1. Но вычисления, производимые над числами с плавающей точкой, могут дать и совершенно неожиданный результат:

/*ошибка вычислений*/

main( )

{

   float a, b;

   b = 2.0е20 + 1.0;

   а = b - 2.0е20;

   printf(" %f ", a);

}

Результат равен

0000000

     Причина появления такого странного результата состоит в отсутствии доста точного числа разрядов для выполнения операций с требуемой точностью. Число 2.0е20 записывается как двойка с последующими двадцатью нулями, и, до бавляя к нему 1, мы пытаемся изменить 21-ю цифру Чтобы выполнить эту oпe рацию корректно, программа должна иметь возможность поместить в память число, состоящее из 21 цифры. Но число типа float (т е. с плавающей точкой) путем изменения порядка можно увеличить или уменьшить лишь на 6 или 7 цифр. Попытка вычисления оказалась неудачной. С другой стороны, если бы мы использовали, скажем, число 2.0е4 вместо 2.0е20, мы смогли бы получить правильный ответ, поскольку в этом случае мы пытались бы изменить 5-ю цифру, и точность представления чисел типа float оказалась бы вполне достаточной для этого.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

2.4.2 Константы с Плавающей Точкой

Из книги C++ автора Хилл Мюррей

2.4.2 Константы с Плавающей Точкой Константы с плавающей точкой имеют тип double. Как и в предыдущем случае, компилятор должен предупреждать о константах с плавающей точкой, которые слишком велики, чтобы их моно было представить. Вот некоторые константы с плавающей точкой:1.23


2.4.4 Константы с Плавающей Точкой

Из книги Справочное руководство по C++ автора Страустрап Бьярн

2.4.4 Константы с Плавающей Точкой Константа с плавающей точкой состоит из целой части, десятичной точки, мантиссы, е или Е и целого показателя стпени (возможно, но не обязательно, со знаком). Целая часть и мантисса обе состоят из последовательности цифр. Целая часть или


R.2.5.3 Константы с плавающей точкой

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

R.2.5.3 Константы с плавающей точкой Константы с плавающей точкой состоят из целой части, символа точка, дробной части, e или E, целого показателя с возможным знаком и возможным окончанием, указывающим тип. Целая и дробная части состоят из последовательности десятичных


R.4.3 Значения с плавающей точкой и двойной точностью

Из книги Этюды для программистов [неполностью, главы 1–24] автора Уэзерелл Чарлз

R.4.3 Значения с плавающей точкой и двойной точностью Для выражений типа float может использоваться арифметика с обычной точностью. Если значение с плавающей точкой меньшей точности преобразуется в значение типа float равной или большей точности, то изменения значения не


R.4.4 Целочисленные и числа с плавающей точкой

Из книги C++. Сборник рецептов автора Диггинс Кристофер

R.4.4 Целочисленные и числа с плавающей точкой Преобразование значения с плавающей точкой к целочисленному типу сводится к "усечению", т.е. отбрасыванию дробной части. Такие преобразования зависят от машины, в частности в какую сторону будет проходить усечение для


5.3. Округление чисел с плавающей точкой

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

5.3. Округление чисел с плавающей точкой Кирк: Какие, вы говорите, у нас шансы выбраться отсюда? Спок: Трудно сказать точно, капитан. Приблизительно 7824.7 к одному. Стар Трек, «Миссия милосердия» Метод round округляет число с плавающей точкой до целого:pi = 3.14159new_pi = pi.round  # 3temp =


5.4. Сравнение чисел с плавающей точкой

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

5.4. Сравнение чисел с плавающей точкой Печально, но факт: в компьютере числа с плавающей точкой представляются неточно. В идеальном мире следующий код напечатал бы «да», но на всех машинах где мы его запускали, печатается «нет»:x = 1000001.0/0.003y = 0.003*xif y == 1000001.0 puts "да"else puts


21. Превратное обратное, или Ошибки при работе с плавающей точкой

Из книги Язык Си - руководство для начинающих автора Прата Стивен

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


3.4. Сравнение чисел с плавающей точкой с ограниченной точностью

Из книги Разработка ядра Linux автора Лав Роберт

3.4. Сравнение чисел с плавающей точкой с ограниченной точностью ПроблемаТребуется сравнить значения с плавающей точкой, но при этом выполнить сравнение на равенство, больше чем или меньше чем с ограниченным количеством десятичных знаков. Например, требуется, чтобы 3.33333 и


Константы с плавающей точкой

Из книги автора

Константы с плавающей точкой Константа с плавающей точкой — это действительное десятичное положительное число. Оно включает целую часть, дробную часть и экспоненту. Константы с плавающей точкой имеют следующий формат


Типы данных с плавающей точкой

Из книги автора

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


Описание переменных с плавающей точкой

Из книги автора

Описание переменных с плавающей точкой      Переменные с плавающей точкой описываются и инициализируются точно таким же образом, что и переменные целого типа. Ниже приведено несколько примеров: float noah, jonah;double trouble;float planck = 6.63e-


Константы с плавающей точкой   

Из книги автора

Константы с плавающей точкой    Правила языка Си допускают несколько способов записи констант с плавающей точкой. Наиболее общая форма записи константы - это последовательность десятичных цифр со знаком, включающая в себя десятичную точку, затем символ е или Е и


Двоичные числа с плавающей точкой

Из книги автора

Двоичные числа с плавающей точкой  Числа с плавающей точкой хранятся в памяти в виде двух частей: двоичной дроби и двоичного порядка. Посмотрим, как это делается. Двоичные дроби Обычную дробь .324 можно представить в виде3/10 + 2/100 + 4/1000,где знаменатели - увеличивающиеся


Нельзя просто использовать вычисления с плавающей точкой

Из книги автора

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