Опубликован: 25.03.2010 | Доступ: свободный | Студентов: 1447 / 157 | Оценка: 4.31 / 4.00 | Длительность: 25:42:00
Лекция 4:

Типы данных C#

Типы для представления чисел с плавающей точкой (вещественные типы)

Таблица 4.5 . Вещественные типы данных и их псевдонимы в C#
Псевдоним C# Соответствие CLS Системный тип Диапазон Пояснения
float + Single 1.5x10-45 - 3.4x1038 Знаковое с плавающей точкой 32 бит
double + Double 5.0x10-324 - 1.7x10308 Знаковое с плавающей точкой 64 бит

Чаще всего используется тип double, поскольку он поддерживается множеством математических функций библиотеки .NET Framework. Большинство математических функций сосредоточено в классе System.Math

using System;
  
namespace Test
{
  // Нахождение радиуса круга по его площади
  class FindRadius
  {
    static void Main()
    {
    double radius, area = 10.0;  
  
    radius = Math.Sqrt(area / Math.PI);
    Console.WriteLine("Площадь круга: 
      {0};", area);
    Console.WriteLine("Радиус круга: 
      {0};", radius);
  
    Console.Read();
    }
  }
}
Листинг 4.15 . Пример. Вычисление радиуса круга по его площади
using System;
  
namespace Test
{
  // Использование тригонометрических методов
  class Trigonometry
  {
    static void Main()
    {
    for(int i = 0; i < 3; i++) // Внешний цикл
    {
    // alpha - угол в градусах
    for(double alpha = 0D; alpha <= 180; alpha = alpha + 10)
    {
    switch(i + 1)
      {
      case 1: Console.WriteLine("Sin({0})={1}", 
        alpha, Math.Sin(alpha / 180 * Math.PI));
        break;
  case 2: Console.WriteLine("Cos({0})={1}", 
    alpha, Math.Cos(alpha / 180 * Math.PI));
        break;
      case 3: Console.WriteLine("Tan({0})={1}",
         alpha, Math.Tan(alpha / 180 * Math.PI));
        break;
      }
    }
    Console.WriteLine();
    }
  
    Console.Read();
  }
  }
}
Листинг 4.16 . Пример. Использование тригонометрических функций

Тип decimal

Предназначен для выполнения вычислений, связанных с денежными единицами.

Таблица 4.6 . Тип decimal в C#
Псевдоним C# Соответствие CLS Системный тип Диапазон Пояснения
decimal + Decimal 10-28 —1028 Знаковое 128 бит

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

using System;
  
namespace Test
{
  // Использование типа decimal для вычисления скидки
  class UseDecimal
  {
  static void Main()
  {
  decimal price; // Цена
  decimal discount; // Скидка
  decimal discounted_price; // Цена со скидкой
  
  // Вычисляем цену со скидкой
  price = 19.95M; // Цена товара
  discount = 0.15m; // Ставка дисконта равна 15%
  discounted_price = price - (price * discount);// Скобки не обязательны
  
  Console.WriteLine("Цена со скидкой: $"
    + discounted_price);
  
  Console.Read();
  }
  }
}
Листинг 4.17 . Использование типа decimal для вычисления скидки
using System;
  
namespace Test
{
  /* 
   * Использование типа decimal для вычисления
   * будущей стоимости капиталовложений
   */
  class UseDecimal
  {
  static void Main()
  {
  decimal amount; // Исходный вклад
  decimal rate_of_return; // Норма прибыли
  int years; // Количество лет
  
  amount = 1000M;
  rate_of_return = .07m;
  years = 10;
  
  Console.WriteLine("Исходный вклад: 
    $" + amount);
  Console.WriteLine("Норма прибыли: 
    " + rate_of_return);
  Console.Write("Через " + years + 
    " лет будет $");
  
  for(int i = 0; i < years; i++)
    amount += amount * rate_of_return;
  
  Console.WriteLine(amount);
  
  Console.Read();
  }
  }
}
Листинг 4.18 . Пример. Использование типа decimal для расчета прибыли

Символьный тип

В C# исмволы представлются не в однобайтном коде ASCII, а в двухбайтном коде Unicode. Это позволяет представлять алфавиты всех существующих в мире языков. Это 16 - разрядный тип без знака.

Таблица 4.7 . Системные типы данных и их псевдонимы в C#
Псевдоним C# Соответствие CLS Системный тип Диапазон Пояснения
char + Char U+0000 - U+FFFF Для описания только одного символа Unicode 16 бит

Символьной переменной можно присвоить значение, заключив соответствующий символ в одинарные кавычки. Например

char ch;
ch = 'X';
using System;
  
namespace Test
{
  class UseDecimal
  {
  static void Main()
  {
  char ch0 = 'П', ch1 = 'р', 
      ch2 = 'и', ch3 = 'в', 
      ch4 = 'е', ch5 = 'т';
  
  Console.WriteLine((int)ch0);
  Console.WriteLine((int)ch1);
  Console.WriteLine((int)ch2);
  Console.WriteLine((int)ch3);
  Console.WriteLine((int)ch4);
  Console.WriteLine((int)ch5 + "\n");
  
  Console.WriteLine(ch0 + ch1 + ch2 + ch3 + ch4 + ch5);
  Console.WriteLine();
  
  Console.WriteLine(ch0);
  Console.WriteLine(ch1);
  Console.WriteLine(ch2);
  Console.WriteLine(ch3);
  Console.WriteLine(ch4);
  Console.WriteLine(ch5 + "\n");
  
  Console.WriteLine("{0}{1}{2}{3}{4}{5}\n", 
      ch0, ch1, ch2, ch3, ch4, ch5);
  
  string str = Convert.ToString(ch0) 
      + Convert.ToString(ch1) 
      + Convert.ToString(ch2) 
      + Convert.ToString(ch3) 
      + Convert.ToString(ch4) 
      + Convert.ToString(ch5);
  Console.WriteLine(str);
  
  Console.Read();
  }
  }
}
Листинг 4.19 . Пример. Использование типа char

Логический тип bool

Тип bool в C# представляет логические значения true или false ( ИСТИНА/ЛОЖЬ ), которые можно использовать в операторах управления (условия, циклы).

using System;
  
namespace Test
{
  class UseBool
  {
  static void Main()
  {
  bool logical;
  logical = false;
  
  int i;
  for(i = 0; i < 2; i++)
  {
  logical = !logical;
  Console.Write("logical={0}: ", logical);
  if(logical)
    Console.WriteLine("Привет от Иванова!");
  else
    Console.WriteLine("Привет от Петрова!");
  }
  Console.WriteLine("10 > 9 равно " + (10 > 9));
  
  Console.Read();
  }
  }
}
Листинг 4.20 . Пример. Использование типа bool
Максим Филатов
Максим Филатов

Прошел курс. Получил код Dreamspark. Ввожу код на сайте, пишет:

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

 

Как активировать код?