Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_S.doc
Скачиваний:
24
Добавлен:
09.02.2015
Размер:
1.2 Mб
Скачать

3.3. Вещественные типы данных

Стандарт C++ определяет три типа данных для хранения вещественных значений: float,doubleиlong double. Все эти типы предназначены для представления отрицательных и положительных значений (спецификаторunsigned к ним не применим) в разных диапазонах:

  • тип float занимает в памяти 4 байта с диапазоном абсолютных значений от 3.4е-38 до 3.4е+38;

  • тип doubleзанимает в памяти 8 байт с диапазоном абсолютных значений от 1.7е-308 до 1.7е+308;

  • тип long double занимает в памяти 10 байт с диапазоном абсолютных значений от 3.4e-4932 до 3.4e+4932.

.

Замечание. В консольных приложенияхWindowsтип данныхlong double занимает в памяти 8 байт, то есть ничем не отличается от типаdouble.

Константы вещественных типов задаются двумя способами:

  • нормальный формат: 123.456или-3.14;

  • экспоненциальный формат: 1.23456e2(1.23456е+2).Привести другие примеры.

Дробная часть отделяется от целой части точкой, а не запятой.

По умолчанию вещественные константы трактуются как константы типа double. Для явного указания другого типа вещественной константы можно использовать суффиксыF (f) - типfloatилиL(l) - типlong double:

3.14F- константа типаfloat,

3.14L- константа типа long double.

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

-1.2345e+2

| |

мантисса порядок

Тип floatзанимает 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу.

Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Длина мантиссы определяет точность числа, а длина порядка — его диапазон.

Все вычисления с вещественными значениями осуществляются приближенно, при этом, ошибки вычислений могут достигать весьма существенных значений. Это объясняется дискретностью внутреннего (машинного) представления непрерывного диапазона вещественных значений. Точность представления значений вещественных типов зависит от размера мантиссы. Относительная точность представления вещественных значений остается постоянной при различных значениях порядка. Однако, абсолютная точность существенно зависит от значения порядка (с уменьшением порядка абсолютная точность возрастает).

Дать приближенную оценку точности на примерах.

Пример неточности вычислений:

float a = 1e30f, b;

b = a + 1e10f;

cout << b - a << endl; // На экран выведено 0

3.4. Логический тип данных

Величины логического типа могут принимать только значения trueиfalse, являющиеся зарезервированными словами. Внутренняя форма представления значенияfalse- О (нуль). Любое другое значение интерпретируется какtrue. При преобразовании к целому типуtrueимеет значение1 (единица).

В памяти переменные этого типа занимают 1 байт.

Определения переменных этого типа выглядят, например, так:

bool b1, b2 = true, b3 (false), b4 = 1, b5 = 0;

Константы – литералы задаются ключевыми словами trueиfalse.

Именованные константы этого типа особого смысла не имеют, но имеют право на существование.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]