Размер шрифта:
Числа в C#. Вводное руководство по C# | Microsoft Docs

Числа в C#. Вводное руководство по C# | Microsoft Docs

Управление целыми числами и числами с плавающей запятой в C#

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

Предварительные требования

Для работы с руководством вам потребуется компьютер, настроенный для разработки в локальной среде. В Windows, Linux или macOS для создания, сборки и запуска приложений можно использовать .NET CLI. Для Mac или Windows можно использовать Visual Studio 2019. Инструкции по настройке см. в статье Настройка локальной среды.

Вычисления с целыми числами

Создайте каталог с именем numbers-quickstart. Сделайте его текущим и выполните следующую команду:

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

Пакет SDK для .NET 6 также добавляет набор неявных директив для проектов, использующих следующие пакеты SDK:

  • Microsoft.NET.Sdk
  • Microsoft.NET.Sdk.Web
  • Microsoft.NET.Sdk.Worker

Эти неявные директивы global using включают наиболее распространенные пространства имен для соответствующего типа проектов.

Откройте файл Program.cs в любом редакторе и замените содержимое файла следующим кодом:

Чтобы выполнить этот код, введите dotnet run в окно командной строки.

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

  • - — вычитание;
  • * — умножение;
  • / — деление.

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

Чтобы выполнить этот код, введите dotnet run в окно командной строки.

Можно также поэкспериментировать, написав несколько математических операций в одной строке. Например, выполните c = a + b - 12 * 17; . Допускается сочетание переменных и постоянных чисел.

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

Вы завершили первый этап. Прежде чем перейти к следующему разделу, переместим текущий код в отдельный метод. Метод — это последовательность инструкций, сгруппированных под одним именем. Чтобы вызвать метод, нужно указать имя метода и () после него. Упорядочение кода в методы упростит работу с новым примером. В результате ваш код должен выглядеть примерно следующим образом:

Строка WorkWithIntegers(); вызывает метод. Код после этой строки объявляет метод и определяет его.

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

Закомментируйте вызов WorkingWithIntegers() . Это поможет упорядочить выходные данные в этом разделе.

// Запускает // в C#. Комментарии — это любой текст, который должен быть сохранен в исходном коде, но не должен выполняться как код. Компилятор не создает исполняемый код из комментариев. Так как WorkWithIntegers() является методом, необходимо закомментировать только одну строку.

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

В выходных данных видно, что умножение выполняется раньше сложения.

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

Поэкспериментируйте, объединяя различные операции. Добавьте строки, как показано ниже. Выполните dotnet run еще раз.

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

Если вы еще не видели пример такого поведения, выполните следующий код:

Выполните dotnet run еще раз, чтобы просмотреть результаты.

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

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

В последнем примере вы увидели, что при делении целых чисел результат усекается. Остаток можно получить с помощью оператора остатка от деления символа. Попробуйте выполнить следующий код после вызова метода OrderPrecedence() :

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

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

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

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

Работа с типом double

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

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

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

Значения выводятся в экспоненциальном представлении. Число слева от символа E является значащим. Число справа — это показатель степени, который равен 10. Так же, как десятичные числа в математике, значения double в C# могут содержать ошибки округления. Выполните этот код:

Вы уверены, что 0.3 повторяющееся конечное число раз не 1/3 совпадает с.

Задача

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

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

Вы уже ознакомились с базовыми числовыми типами в C# — целыми числами и числами типа double. Осталось изучить еще один тип: decimal . Тип decimal имеет меньший диапазон, но большую точность, чем double . Например:

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

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

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

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

Задача

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

Вы должны получить ответ от 19 до 20. Ответ можно просмотреть в готовом примере кода на GitHub.

При желании поэкспериментируйте с другими формулами.

Вы выполнили все задачи краткого руководства по числам в C#. Теперь вы можете выполнить руководство по ветвям и циклам в своей среде разработки.

📎📎📎📎📎📎📎📎📎📎