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




ЗНАЕТЕ ЛИ ВЫ?

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



 

Даже если дробная часть равна 0, как в числе 8.0, наличие десятичной точки гаран­тирует, что число будет храниться в формате чисел с плавающей точкой, а не целых чисел

Второй способ записи чисел с плавающей точкой называется экспоненциальной формой записи или просто экспоненциальной записью, например: 3.45Е6. Эта запись означает, что число 3.45 умножается на 1000000; Е6 означает 10 в 6-й степени. Таким образом, запись 3.45Е6 соответствует числу 3450000. Здесь число 6 называется экспо-нентой, а 3.45 — мантиссой. Рассмотрим несколько примеров:

 

2.52е+8 // можно использовать Е или е, знак " + " необязателен

Е-4 // экспонента может быть отрицательной

7Е5 // то же самое, что и 7.ОЕ+05

-18.32е13 // перед мантиссой может стоять знак "+" или "-"

Е12 // государственный долг США, 1989 г.

Е24 // масса Земли в килограммах

Е-31 // масса электрона в килограммах

 

Экспоненциальная запись наиболее удобна для очень боль­ших и очень маленьких чисел.

Экспоненциальная запись числа гарантирует, что число будет храниться в формате чисел с плавающей точкой, даже если десятичная точка отсутствует. Можно писать, как е, так и е, а экспонента может иметь знак "+" или "-". (см. рис.). Однако внутри числа недопустимы пробелы; так, запись является неверной: 7.2 Е6.

Отрицательная экспонента означает не умножение, а деление на 10 в соответствую­щей степени. Таким образом, 8.33Е-4 означает 8.33 разделить на 10 в степени 4, или 0.000833. Аналогично масса электрона 9.11е-31 кг означает

Кг

Существует три типа данных для хранения чисел с плавающей точкой: float, double и long double.

Тип Размерность (байт) Диапазон
float от 3.4Е-38 до 3.4Е+38
double от 1.7Е-308 до 1.7Е+308
long double от 3.4Е-4932 до 3.4Е+4932

 

Какой тип данных используется для хранения в компьютере константы с плаваю­щей точкой? По умолчанию константы с плавающей точкой, например 8.24 и 2.4Е8, будут иметь тип данных double. Если необходимо создать константу типа float, до­бавьте к ней суффикс f или F. Чтобы тип константы был long double, нужно приме­нить суффикс 1 или L.

 

L.234f // константа типа float

E20F // константа типа float

Е28 // константа типа double

L // константа типа long double

 

Операции и выражения.

Выражение в языке С++ – это последовательность операндов, операций и символов-разделителей. Операнды – это переменные, константы либо другие выражения. Разделителями в С++ являются символы:

 

[ ] ( ) { } , ; : * = #,

 

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

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

 

Операции и выражения. Арифметические операции.

 

В языке C++ имеется пять основных арифметических операций: сложение, вычитание, умножение, деление и деление по модулю. Также существуют две специфические операции, к которым относится операция инкремента и декремента.

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

 

int wheels = 4 + 2;

 

Числа 4 и 2 являются операндами, знак "+" является операцией сложения, а запись 4 + 2 представляет собой выражение, значение которого равно б.

 

Ниже описаны пять основных арифметических операций языка C++:

Операция сложения +

задает сложение двух операндов. Например, 4 + 20 равно 24.

 

Операция вычитания

задает вычитание второго операнда из первого. Например, 12-3 равно 9.

 

• Операция умножения *

задает умножение операндов. Например, 28 * 4 равно 112.

 

• Операция деления /

задает деление первого операнда на второй. Например, 1000 / 5 равно 200. Если оба операнда — целые числа, результатом будет целая часть ча­стного. Например, 17/3 равно 5, дробная часть отбрасывается.

 

• Операция вычисления остатка от деления %

задает нахождение остатка от деления первого операнда на второй. Например, 19 % 6 равно 1, так как число 19 содержит три раза по 6 с остатком 1. Оба операнда должны быть целочисленными данными. Если один из операндов отрицателен, знак результата зависит от реализации языка.

 

Операция инкремента ++

увеличивает значение операнда на 1. Например:

 

int i;

i=1;

i++;//Здесь переменная i имеет теперь значение 2

 

Операция декремента - -

уменьшает значение операнда на 1. Например:

 

int i;

i=1;

I--;//Здесь переменная i имеет теперь значение 0

Операции и выражения.

Операция присваивания.

 

Язык C++ имеет несколько особенностей выполнения операции присваивания, задаваемого символом операции =. При выполнении операции значение операнда справа от знака равенства записывается в переменную, указанную слева от знака.

В отличие от других языков программирования в С++ допускается запись в одном предложении сразу нескольких операций присваивания. Например:

int a,b,c,d;

a=b=c=d=145;

Другая особенность операции присваивания в языке С++ - наличие так называемой комбинированной операции присваивания:

переменная операция = выражение

 

Где переменная – это обычная как-то задаваемая переменная.

Операция – это одна из операция, задаваемых знаками: *, /, +, -, % , << , >> , &, ^ , |.

Выражение – любое выражение.

 

Например:

int a,b;

a=b=10;

a+=12; // a теперь имеет значение 22

b-=(a+4); // b теперь имеет значение -16

Арифметические выражения.

Приоритет операций и ассоциативность

 

Можно ли в языке C++ выполнять сложные арифметические вычисления? Да, но нужно знать, какие правила языка C++ при этом используются. Например, многие выражения содержат более одной операции. Отсюда возникает вопрос, какая операция должна выполняться первой? Рассмотрим такой оператор:

 

int i = 3 + 4*5; //35 или 23?

 

Здесь число "4" является операндом как в операции сложения (+), так и в операции умножения (*). Когда один операнд может участвовать более чем в одной операции, чтобы решить, какая операция должна выполняться первой, в языке C++ применяются правила приоритета операций. Для арифметических операций используется обычная алгебраическая приоритетность, в соответствии с которой умножение, деление и деле­ние по модулю выполняются перед сложением и вычитанием. Таким образом, 3+4*5 означает 3 + (4 * 5), а не (3 + 4) *. 5. Следовательно, ответ будет 23, а не 35.

Порядок выполнения операций можно, разумеется, изменить с помощью круглых скобок. Об­ратите внимание на то, что операции *, / и % имеют одинаковый приоритет. Аналогично сложение и вычитание облада­ют одинаковым, но более низким по сравнению с умножением приоритетом.

Однако в некоторых случаях правил приоритетности недостаточно. Рассмотрим сле­дующий оператор:

 

float j = 120/4*5; // 150 или 6?

 

Число "4" снова является операндом двух операций. Однако операции /и * имеют одинаковый приоритет, поэтому одного приоритета здесь недостаточно, чтобы опреде­лить, что делать в первую очередь: делить 120 на 4 или умножать 4 на 5. А этот порядок имеет значение, так как в первом случае результат равен 150, а во втором — 6. Когда две операции имеют одинаковый приоритет, порядок выполнения операций определяется правилом «слева направо».

Поэтому j=150.0;

Арифметические выражения

Преобразования типов данных

 

Разнообразие типов данных в языке C++ дает программисту возможность выбирать вариант, соответствующий конкретной потребности. Однако такое разнообразие, с дру­гой стороны, усложняет задачу компьютера. Например, сложение двух чисел типа short может выполняться с помощью иных машинных команд, чем сложение двух чи­сел типа long. Когда имеется 11 типов целочисленных данных и три типа данных с плавающей точкой, компьютеру приходится обрабатывать множество различных случа­ев, особенно если в одной операции смешаны данные различных типов. Чтобы не допу­стить возможной путаницы, в языке C++ многие преобразования типов данных выпол­няются автоматически:

 

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

 

// данные типа int преобразуются в данные // типа float

float tree = 3;

// данные типа float преобразуются

// в данные типа int

int guess = 3.9832;

Результат:

tree = 3.0

guess = 3

  • Преобразование данных осуществляется, когда в выражении содержатся данные разных типов.

 

Когда некоторая операция выполняется над данными двух разных типов, то дан­ные меньшего типа преобразуются в данные большего типа. Например:

 

int i=45;

float f=450.123;

float r=i+f; // результат float

 

  • Преобразование данных осуществляется при передаче аргументов в функции.

Если не знать, что происходит при таких автоматических преобразованиях, то ре­зультаты выполнения некоторых программ могут оказаться для вас неожиданными.

Приведение типов:

 

В общем виде:

(имяТипа) значение

// преобразует значение в данные типа имяТипа

ИмяТипа (значение)

// преобразует значение в данные типа имяТипа

 

Пример:

float f=450.123;

int guess;

guess = (int)(3.9832 + f);

Или

guess = int(3.9832 + f);

Операции и выражения.





Последнее изменение этой страницы: 2016-04-26; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.236.156.34 (0.01 с.)