- •Алфавит
- •Комментарии
- •Идентификаторы
- •Ключевые слова
- •Переменные и константы
- •Пространства имен
- •Main() и аргументы командной строки
- •Операторы
- •Основные операторы
- •Унарные операторы
- •Аддитивные операторы
- •Мультипликативные операторы
- •Операторы сдвига
- •Операторы отношений
- •Операторы присваивания
- •Арифметическое переполнение
- •Математические операции
- •Литералы
- •Описание
- •Структуры
- •Инкапсуляция
- •Наследование
- •Полиморфиэм
- •Конструкторы
- •Деструкторы
- •Интерфейсы
- •Делегаты
- •Типы значений
- •Ссылочные типы
- •Тип dynamic
- •Тип object
- •Тип string
- •Встроенные базовые типы
- •Типы чисел
- •Типы целых чисел
- •Типы чисел с плавающей запятой
- •Значения типов по умолчанию
- •Преобразования типов
- •Стандартное форматирование чисел
- •Задание типов в объявлениях переменных
- •Инструкции, введение
- •Выражения
- •Разделители
- •Базовые алгоритмические структуры
- •Решения и ветвления
- •Безусловный переход вызовом функций
- •Ветвление if; else
- •Вложенные ветвления if; else
- •Выбор switch; case
Типы чисел с плавающей запятой
Стандарт IEEE 754-1985 определяет
Представление нормализованных положительные и отрицательные числа с плавающей точкой.
Представление нормализованных положительные и отрицательные числа с плавающей точкой.
Представлениенулевыхчисел,
Представление специальной величины - бесконечность (Infiniti),
Представление специальной величины "Не число" (NaN – No a Number),
IEEE 753-1985 определяет 4 формата представления чисел с плавающей запятой:
с одинарной точностью (single-precision) 32 бита,
с двойной точностью (double-precision) 64 бита,
с одинарной расширенной точностью (single-extended precision) >=43 бит (редко используемый),
с двойной расширенной точностью (double-extended precision) >= 79 бит (обычно используют 80 бит).
Основное применение в технике и программирование получили форматы 32 и 64 бита. Например, в С# используют типы данных single и double.
Основные понятия в представлении чисел с плавающей точкой.
Возьмем, к примеру, десятичное число 155.625. Представим это число в нормализованном экспоненциальном виде: 1.55625*102=1.55625e+2.
Число 1.55625e+2 состоит из двух частей: мантиссы M=1.55625 и экспоненты e =+2.
Нормализованные числа Если мантисса находится в диапазоне 1<=M<2 то число считается нормализованным.
Денормализованные числа. Это числа, мантиссы которых лежат в диапазоне 0.1 <= M <1 Денормализованные числа находятся ближе к нулю, чем нормализованные. Денормализованные числа как бы разбивают минимальный разряд нормализованного числа на некоторое подмножество. Сделано так потому, что в технической практике чаще встречаются величины близкие к нулю.
Экспонента представлена основанием системы исчисления (в данном случае 10) и порядком (в данном случае +2). Порядок экспоненты может иметь отрицательное значение, например число 0,0155625=1,55625e-2.
Формальное представление нормализованных чисел в формате IEEE 754.
S - бит знака числа (0 - положительное число; 1 - отрицательное число).
E - смещенная экспонента (смещение для устранения знака порядка). Порядок = E - 2(b-1) + 1 , где E- экспонента двоичного нормализованного числа с плавающей точкой, 2(b-1)-1 - смещение экспоненты.
M - остаток мантиссы двоичного нормализованного числа с плавающей точкой (Первый бит мантиссы всегда 1, поэтому он скрывается).
Значения типов по умолчанию
В приведенной ниже таблице показаны значения по умолчанию типов значений, возвращаемые конструкторами по умолчанию.
Помните, что в C# не допускается использование неинициализированных переменных.
Тип |
Значение по умолчанию |
bool |
false |
byte |
0 |
char |
'\0' – код с номером 0 |
decimal |
0,0M |
double |
0,0D |
float |
0,0F |
int |
0 |
long |
0L |
sbyte |
0 |
short |
0 |
uint |
0 |
ulong |
0 |
ushort |
0 |
Преобразования типов
Все вычисления происходят с использованием типа double. Другие типы чисел могут применяться для уменьшения занимаемой памяти. При их использовании перед вычислением они преобразуются в тип double. Различают преобразования:
Неявные преобразования используются для совместимых типов. Значения источника полностью отображаются приемником. Например, при преобразовании int в double (int – подмножество double). Такое преобразование выполняется автоматически, его не надо заказывать.
Явные преобразования используются для несовместимых типов. Например, при преобразовании double в int (int – подмножество double). Значения источника не полностью отображаются приемником. Если типы несовместимы, но ошибка допустима, то преобразование возможно, но его нужно явно заказать: для этого перед преобразуемым выражением добавляется префикс идентификации конечного типа (в круглых скобках).
Например,
double db=12.94;
int i = (int) db;