Использование целых чисел и чисел с плавающей запятой в 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.
После этого откройте область сведений, чтобы узнать, как это сделать:
Попробуйте использовать другие формулы, если вы хотите.
Вы завершили интерактивное руководство по числу чисел в C#. Вы можете выбрать ссылку ветвей и циклов, чтобы начать следующий интерактивный учебник, или посетить сайт .NET , чтобы скачать пакет SDK для .NET, создать проект на своём компьютере и продолжить программирование. В разделе "Дальнейшие шаги" вы возвращаетесь к этим руководствам.
Дополнительные сведения о числах в C# см. в следующих статьях: