Читать в оригинале

<< ПредыдущаяОглавлениеСледующая >>


4.3.4. Арифметические операции

В языке C# имеются обычные для всех языков арифметические операции: «+» (сложение), «-» (вычитание), «*» (умножение), «/», «%» (2 вида деления). Все они перегружены. Операции «+» и «-» могут быть унарными и бинарными. Операция деления «/» над целыми типами осуществляет деление нацело, для типов с плавающей и фиксированной точкой - обычное деление. Операция «%» определена над всеми арифметическими типами и возвращает остаток от деления нацело. Тип результата зависит от типов операндов. Приведем пример вычислений с различными арифметическими типами:

/// <summary>
/// Арифметические операции
/// </summary>
public void Ariphmetica() {
          int n = 7, m = 3, p, q;
          p = n/m;
          q = p*m + n%m;
          if (q == n) Console.WriteLine("q=n");
          else Console.WriteLine("q!=n");
          double x = 7, y = 3, u, v, w;
          u = x/y; v = u*y;
          w = x%y;
          if (v == x) Console.WriteLine("v=x");
          else Console.WriteLine("v!=x");
          decimal d1 = 7, d2 = 3, d3, d4, d5;
          d3 = d1/d2;
          d4 = d3*d2;
          d5 = d1%d2;
          if (d4 == d1) Console.WriteLine("d4=d1");
          else Console.WriteLine("d4!=d1");
} //Ariphmetica

При проведении вычислений в двух первых случаях проверяемое условие оказалось истинным, в третьем - ложным. Для целых типов можно исходить из того, что равенство n = n/m*m + n%m истинно. Для типов с плавающей точкой выполнение точного равенства x = x/y*y следует считать скорее случайным, а не закономерным событием. Законно невыполнение этого равенства, как это имеет место при вычислениях с фиксированной точкой.

 



<< ПредыдущаяОглавлениеСледующая >>