Арифметические операторы




 

VB поддерживает арифметические операторы (arithmeticoperators) для основных арифметическихопераций (arithmeticoperations).Операции представляют определенные действия над операндами – участниками операции. В качестве операнда может выступать переменная или какое-либо значение (например, число). Операции бывают унарными (выполняются над одним операндом), бинарными - над двумя операндами и тернарными - выполняются над тремя операндами.

Оператор VB Оператор C# Операция Пример
Бинарные
+ (плюс)   Сложение (addition) 2 + 3 = 5
- (минус)   Вычитание(subtraction) 6 – 4 = 2
* (звездочка)   Умножение (multiplication) 4 * 7 = 28
/ (слэш)   Деление (division) 30 / 5 = 6
\ (обр. слэш)   Целочисленное деление (integerdivision) 32 \ 5 = 6
Mod   Остатокотделения (remainder of the division) 32 Mod 5 = 2
^ (домик)   Возведение в степень (exponentiation) 2 ^ 5 = 32
Унарные
- (минус)   Отрицание -56
       
       

 

Практическое задание. Пользователь вводит два вещественных числа. Программа находит сумму, разность и произведение этих чисел, выводит результаты на экран. Пользователь вводит третье число, программа вычисляет выражение: a+b*c-a*c+b.

 

Оператор «/»

 

Делит два числа и возвращает результат в виде числа с плавающей запятой. Результатом является полное частное. Тип данных полученного значения зависит от типов операндов.

 

Типы данных операндов Тип данных результата
Оба операнда являются целочисленными типами данных (SByte, Byte, Short, UShort, Integer, UInteger, Long, Ulong) Double
Один операнд имеет тип данных Single, а другой — не Double Single
Один операнд имеет тип данных Decimal, а второй не является Single или Double Decimal
Любой операнд является типом данных Double Double

 

Dim intX, intY As Integer

Dim objZ As Object

Console.Write("ВведитечислоХ: ")

intX = Console.ReadLine

Console.Write("ВведитечислоY: ")

intY = Console.ReadLine

objZ = intX / intY

Console.WriteLine("Результат операции {0} / {1} = {2}", intX, intY, objZ)

Console.WriteLine("Тип данных результата: {0}", TypeName(objZ))

Console.ReadKey()

 

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

 

Если второй операнд равен 0, то поведение оператора «косая черта» зависит от типа данных операндов:

 

- Операнды типа Decimal. «/» возвращает исключение «DivideByZeroException»;

- Операнды с плавающей запятой (Single, Double). «/» возвращает бесконечность или NaN (не число).

 

Dim dblN1, dblN2, dblQuotient As Double

Console.Write("Введите делимое: ")

dblN1 = Console.ReadLine

Console.Write("Введите делитель: ")

dblN2 = Console.ReadLine

 

dblQuotient = dblN1 / dblN2

Console.WriteLine("Этонечисло? " & Double.IsNaN(dblQuotient))

Console.WriteLine("Это бесконечность? " & Double.IsInfinity(dblQuotient))

Console.WriteLine("Этоминусбесконечность? " & Double.IsNegativeInfinity(dblQuotient))

Console.WriteLine("Это плюс бесконечность? " & Double.IsPositiveInfinity(dblQuotient))

Console.ReadKey()

 

Деление с остатком

 

Деление c остатком — арифметическая операция, играющая большую роль в арифметике, теории чисел, алгебре и криптографии. Чаще всего эта операция определяется для целыхилинатуральных чисел следующим образом.Пустьa и b— целые числа, причёмb не равно 0. Деление с остатком a («делимого») на b («делитель») означает нахождение таких целых чисел qи r, что выполняется равенство:

 

a = b * q + r, где 0<= r< |b|

 

Таким образом, результатами деления с остатком являются два целыхчисла: q называется неполным частным от деления, аr— остатком от деления. На остаток налагается дополнительное условие: 0 <= r< |b|,то есть остаток от деления должен быть неотрицательным числом и по абсолютной величине меньшеделителя. Это условие обеспечивает однозначность результатов деления состатком длявсех целых чисел, т.е. существует единственное решение уравненияa = b * q + rпри заданных условиях. Если остаток равен нулю, говорят, чтоaнацело делится наb.

 

Нахождение неполного частного также называют целочисленным делением, а нахождение остатка от деления называют взятием остатка.

 

Примеры:

 

- При делении с остаткомчисла a = 78на b = 33получаем неполное частное q=2 и остаток r = 12. Проверка: 78 = 33*2 + 12;

- При делении с остаткомчисла a = -78на b = 33получаем неполное частное q= -3и остаток r = 21. Проверка:-78 = 33*(-3) + 21;

- При делении с остаткомчисла a = 78на b = -33получаем неполное частное q= -2и остаток r = 12. Проверка: 78 = -33*(-2) + 12;

- При делении с остаткомчисла a = -9на b = -13получаем неполное частное q= 1и остаток r = 4. Проверка:-9 = -13*1 + 4;

- При делении с остатком положительного числа a = 9на b = 90получаем неполное частное q= 0и остаток r = 9. Проверка:9 = 90*0 + 9;

- При делении с остатком положительного числа a = 78на b = 26получаем неполное частное q= 3и остаток r = 0, т.е. деление выполняется нацело.

- При делении с остатком числа a = 0 на b = 4 получаем неполное частное q = 0.

 

Оператор «\»

 

Делит два числа и возвращает целочисленный результат. Результатом является «неполное» частное, которое отклоняет остаток и оставляет только целую часть (усечение).

 

Dim intX, intY AsInteger

DimintZ AsInteger

Console.Write("ВведитечислоХ: ")

intX = Console.ReadLine

Console.Write("ВведитечислоY: ")

intY = Console.ReadLine

intZ = intX \ intY

Console.WriteLine("Результат операции {0} \ {1} = {2}", intX, intY, intZ)

 

Перед выполнением целочисленного деления VBпытается преобразовать любое числовое выражение с плавающей запятой в Long. Если директива OptionStrictимеет значение On, то возникает ошибка компилятора. Если OptionStrictимеет значение Off, то может возникнуть ошибка переполнения, если значение выйдет за пределы диапазона типа данных Long. Преобразование в Long происходит с округлением числа, поэтому рекомендуется использовать целочисленные операнды в операторе «\». Если второй операнд равен 0, то оператор обратная косая черта вызовет исключение DivideByZeroException.

 

Оператор Mod

 

Делит два числа и возвращает остаток от деления.Существует отличие между остатком от деления в математике и в VB. Результат операции нахождения остатка от деления двух чисел сохраняет знак делимого, и поэтому, он может быть как положительным, так и отрицательным.

 

Console.WriteLine($" 78 Mod 33 = {78 Mod 33}")' 78 Mod 33 = 12

Console.WriteLine($"-78 Mod 33 = {-78 Mod 33}")' -78 Mod 33 = -12

Console.WriteLine($" 78 Mod -33 = {78 Mod -33}")' 78 Mod -33 = 12

Console.WriteLine($" -9 Mod -13 = {-9 Mod -13}")' -9 Mod -13 = -9

Console.WriteLine($" 9 Mod 90 = {9 Mod 90}")' 9 Mod 90 = 9

Console.WriteLine($" 78 Mod 26 = {78 Mod 26}")' 78 Mod 26 = 0

 

Если любой операнд оператора Modявляется вещественным числом, то результат операции тоже будет вещественным числом. Если второй операнд равен 0, то поведение оператора Modзависит от типа данных операндов:

 

- Целочисленное деление на 0 вызывает исключение «DivideByZeroException»;

- Деление числа с плавающей запятой на 0 возвращает Double.NaN.

 

На заметку:

В следующем примере показана потенциальная неточность операндов с плавающей запятой. В первой инструкции операнды имеют тип Double и значение 0.2, которое хранится в памяти компьютера в виде бесконечно повторяющейся двоичной дроби. Во второй инструкции символ D задает операндам тип данных Decimal, что приводит к точному хранению числа 0.2.

 

' Double operation returns 0.2, not 0.

Console.WriteLine($"2.0 Mod 0.2 = {2.0 Mod 0.2}")

' Decimal operation returns 0.

Console.WriteLine($"2.0 Mod 0.2 = {2D Mod 0.2D}")

 

Оператор «^»

 

Возводит число в степень. Он всегда преобразует свои операнды в тип double и возвращает значение типа double.

 

Dim dblX, dblY, dblZ AsDouble

dblX = 2

dblY = 16

dblZ = dblX ^ dblY

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-10-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: