Опубликован: 25.03.2010 | Уровень: для всех | Доступ: платный
Лекция 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. Ввожу код на сайте, пишет:

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

 

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

Денис Пашков
Денис Пашков
Россия
Татьяна Ковалюк
Татьяна Ковалюк
Украина, Киев, Киевский политехнический институт, 1974