Упражнение. Выполнение математических операций

Завершено

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

Выполнение основных математических операций

Написание кода для выполнения добавления, вычитания, умножения и деления целыми числами

  1. Выделите весь код в редакторе .NET и нажмите клавишу DELETE или BACKSPACE, чтобы удалить его.

  2. Введите следующий код в редакторе .NET:

    int sum = 7 + 5;
    int difference = 7 - 5;
    int product = 7 * 5;
    int quotient = 7 / 5;
    
    Console.WriteLine("Sum: " + sum);
    Console.WriteLine("Difference: " + difference);
    Console.WriteLine("Product: " + product);
    Console.WriteLine("Quotient: " + quotient);
    
  3. Выполните код. Должен появиться следующий результат:

    Sum: 12
    Difference: 2
    Product: 35
    Quotient: 1
    

Вы можете видеть следующее.

  • + — это оператор сложения
  • - — это оператор вычитания
  • * — это оператор умножения
  • / — это оператор деления

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

Добавление кода для выполнения деления с помощью десятичных литеральных данных

Для правильной работы деления необходимо использовать тип данных, поддерживающий дробные цифры после десятичной запятой, например decimal.

  1. Удалите код из предыдущих шагов и введите следующий код в редактор .NET:

    decimal decimalQuotient = 7.0m / 5;
    Console.WriteLine($"Decimal quotient: {decimalQuotient}");
    
    
  2. Выполните код. Должен появиться следующий результат:

    Decimal quotient: 1.4
    

Чтобы это работало, кворот (слева от оператора назначения) должен иметь тип, и по крайней мере один из чисел, разделенных, также должен иметь тип decimal(оба числа также могут быть типом decimaldecimal ).

Ниже приведены два корректных примера.

decimal decimalQuotient = 7 / 5.0m;
decimal decimalQuotient = 7.0m / 5.0m;

Тем не менее следующие строки кода не будут работать (или будут давать неточные результаты):

int decimalQuotient = 7 / 5.0m;
int decimalQuotient = 7.0m / 5;
int decimalQuotient = 7.0m / 5.0m;
decimal decimalQuotient = 7 / 5;

Добавление кода для приведения результатов целочисленного деления

Что делать, если вы не используете литеральные значения? Другими словами, вам необходимо выполнить деление с использованием двух переменных типа int, но при этом требуется избежать усечения результата? В этом случае следует выполнить приведение типа данных int к decimal. Приведение — это один из способов преобразования данных, в рамках которого компилятор временно обрабатывает указанное значение как значение с другим типом данных.

Чтобы привести значение int к типу decimal, необходимо добавить перед этим значением оператор приведения. Имя типа данных, окруженного круглыми скобками перед значением, используется для его приведения. В этом случае вы добавите (decimal) перед переменными first и second.

  1. Удалите код из предыдущих шагов и введите следующий код в редактор .NET:

    int first = 7;
    int second = 5;
    decimal quotient = (decimal)first / (decimal)second;
    Console.WriteLine(quotient);
    
  2. Выполните код. Должен появиться следующий результат:

    1.4
    

Примечание.

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

Написание кода, чтобы определить оставшуюся часть после целочисленного деления

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

  1. Удалите код из предыдущих шагов и введите следующий код в редактор .NET:

    Console.WriteLine($"Modulus of 200 / 5 : {200 % 5}");
    Console.WriteLine($"Modulus of 7 / 5 : {7 % 5}");
    
    
  2. Выполните код. Должен появиться следующий результат:

    Modulus of 200 / 5 : 0
    Modulus of 7 / 5 : 2
    

Если остаток равен 0, значит, делимое делится на делитель.

Порядок операций

Как вы узнали в предыдущем упражнении, вы можете использовать () символы в качестве порядка операторов операций . Тем не менее сделать это можно и другими способами.

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

  1. Скобки (в первую очередь выполняются выражения в скобках)
  2. Экспоненты и степени
  3. Умножение и Деление (слева направо)
  4. Прибавление (сложение) и Вычитание (слева направо)

В C# порядок операций СЭУДПВ соблюдается для всех операций, кроме возведения в степень. Несмотря на отсутствие экспонентного оператора в C#, этот метод можно использовать System.Math.Pow . Сведения об этом и других методах см. в модуле, посвященном вызову методов из библиотеки классов .NET с использованием C#.

Написание кода для выполнения порядка операций C#

  1. Удалите код из предыдущих шагов и введите следующий код в редактор .NET:

    int value1 = 3 + 4 * 5;
    int value2 = (3 + 4) * 5;
    Console.WriteLine(value1);
    Console.WriteLine(value2);
    

    Здесь вы увидите разницу при выполнении одинаковых операций в другом порядке.

  2. Выполните код. Должен появиться следующий результат:

    23
    35
    

Кратко

Вот что вы узнали до сих пор о математических операциях в C#:

  • Для выполнения основных математических операций используются операторы +, -, * и /.
  • При делении двух значений типа int все десятичные разряды результата после запятой будут усечены. Чтобы сохранить значения после десятичной запятой, необходимо привести разделитель или дивиденд (или оба) из int числа с плавающей запятой, например decimal сначала, то кворот должен иметь один и тот же тип с плавающей запятой, а также, чтобы избежать усечения.
  • Чтобы временно обрабатывать значение как значение другого типа данных, следует выполнить операцию приведения.
  • Для получения остатка от деления используйте оператор %.
  • Порядок выполнения математических операций можно запомнить с помощью аббревиатуры СЭУДПВ.