Поделиться через


Использование целых чисел и чисел с плавающей запятой в C#

В этом руководстве описаны числовые типы в C#. Вы пишете небольшие объемы кода, а затем компилируете и запускаете этот код. В этом руководстве содержится ряд уроков, в которых рассматриваются числа и математические операции в C#. Эти уроки учат вас основам языка C#.

Совет

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

Изучение целочисленной математики

Выполните следующий код в интерактивном окне.

int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);

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

  • Символ - для вычитания
  • * для умножения
  • / для деления

Начните с изучения этих различных операций. Измените третью строку, чтобы попробовать каждую из этих операций. Например, чтобы попробовать вычитание, замените + на -, как показано в следующей строке.

int c = a - b;

Попробуйте. Нажмите кнопку "Выполнить". Затем попробуйте умножение, * и, деление, /. Вы также можете поэкспериментировать, написав несколько математических операций в одной строке, если вы хотите.

Совет

При изучении C# (или любого языка программирования) при написании кода возникают ошибки. Компилятор находит эти ошибки и сообщает вам. Если выходные данные содержат сообщения об ошибках, внимательно изучите пример кода и код в интерактивном окне, чтобы узнать, что нужно исправить. Это упражнение поможет вам узнать структуру кода C#.

Изучение порядка операций

Язык C# определяет приоритет различных математических операций с правилами, согласованными с правилами, которые вы узнали в математике. Умножение и разделение имеют приоритет над добавлением и вычитанием. Изучите это, выполнив следующий код в интерактивном окне:

int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);

Выходные данные показывают, что умножение выполняется перед добавлением.

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

d = (a + b) * c;
Console.WriteLine(d);

Исследуйте больше, комбинируя различные операции. Замените четвертую строку в приведенном выше коде следующим образом:

d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Console.WriteLine(d);

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

Попробуйте выполнить следующий код:

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);

Изучение целочисленной точности и ограничений

В последнем примере показано, что целочисленное деление усекает результат. Оставшиеся можно получить с помощью оператора оставшегося символа %:

int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");

Целочисленный тип C# отличается от математических целых чисел другим способом: тип int имеет минимальные и максимальные ограничения. Попробуйте просмотреть эти ограничения в следующем коде:

int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");

Если результат вычислений дает значение, выходящее за пределы этих ограничений, возникает условие недостаточного заполнения или переполнения. Ответ, как представляется, переходит от одного предела к другому. Чтобы просмотреть пример, добавьте эти две строки в интерактивном окне:

int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");

Обратите внимание, что ответ очень близок к минимальному (отрицательному) целочислению. Это то же самое, что и min + 2. Операция сложения превысила допустимые значения для целых чисел. Ответ представляет собой большое отрицательное число, поскольку при переполнении значение "перепрыгивает" с максимального возможного целого числа на минимальное.

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

Работа с двойным типом

Числовой тип double представляет число с плавающей запятой двойной точности. Эти термины могут быть новыми для вас. Число с плавающей запятой полезно для представления неинтегральных чисел, которые могут быть большими или небольшими. двойная точность — это относительный термин, описывающий количество двоичных цифр, используемых для хранения значения. числа двойной точности имеют в два раза больше двоичных цифр, чем числа одинарной точности. На современных компьютерах чаще используются числа двойной точности, чем числа одинарной точности. числа точности объявляются с помощью ключевого слова float. Давайте исследуем. Выполните следующий код и просмотрите результат:

double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);

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

double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);

Диапазон двойного значения больше целочисленных значений. Попробуйте выполнить следующий код в интерактивном окне:

double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");

Эти значения печатаются в научной нотации. Число перед E является знаки. Число после E является экспонентом, как мощность 10.

Как и десятичные числа в математике, двойные числа в C# могут иметь ошибки округления. Попробуйте использовать следующий код:

double third = 1.0 / 3.0;
Console.WriteLine(third);

Вы знаете, что 0.3 - это 3/10, а не совсем совпадает с 1/3. Аналогичным образом 0.33 — это 33/100. Это значение ближе к 1/3, но по-прежнему не точно. Независимо от того, сколько десятичных разрядов вы добавляете, остается ошибка округления.

челлендж

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

Работа с десятичными типами

Существует еще один тип, который нужно узнать: тип decimal. Тип decimal имеет меньший диапазон, но более высокую точность, чем double. Давайте посмотрим:

decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");

Обратите внимание, что диапазон меньше типа double. Вы можете увидеть большую точность с десятичным типом, выполнив следующий код:

double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);

decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);

Обратите внимание, что математика с использованием десятичного типа имеет больше цифр справа от десятичной запятой.

Суффикс M на числах указывает, что константа должна использовать тип decimal. В противном случае компилятор предполагает тип double.

Заметка

Буква M была выбрана в качестве наиболее визуальной буквы между ключевыми словами double и decimal.

вызов

Напишите код, вычисляющий область круга, радиус которого составляет 2,50 сантиметра. Помните, что область круга — это радиус, умноженный на ПИ. Одно указание: .NET содержит константу для PI, Math.PI, которую можно использовать для этого значения. Math.PI, как и все константы, объявленные в пространстве имен System.Math, является значением double. По этой причине, для этой задачи, следует использовать значения double вместо decimal.

Вы должны получить ответ от 19 до 20.

После этого откройте область сведений, чтобы узнать, как это сделать:

::code language="csharp" interactive="try-dotnet-method" source="./snippets/NumbersInCsharp/Program.cs" id="Challenge":::

Попробуйте использовать другие формулы, если вы хотите.

Вы завершили интерактивное руководство по числу чисел в C#. Вы можете выбрать ссылку ветвей и циклов, чтобы начать следующий интерактивный учебник, или посетить сайт .NET , чтобы скачать пакет SDK для .NET, создать проект на своём компьютере и продолжить программирование. В разделе "Дальнейшие шаги" вы возвращаетесь к этим руководствам.

Дополнительные сведения о числах в C# см. в следующих статьях: