На заметку! После того как переменной BigInteger
присвоено значение, модифицировать ее больше нельзя, т.к. это неизменяемые данные. Тем не менее, в классе BigInteger
определено несколько членов, которые возвращают новые объекты BigInteger
на основе модификаций данных (такие как статический метод Multiply
, используемый в следующем примере кода).
В любом случае после определения переменной BigInteger
вы обнаружите, что в этом классе определены члены, похожие на члены в других внутренних типах данных C# (например, float
либо int
). Вдобавок в классе BigInteger
определен ряд статических членов, которые позволяют применять к переменным BigInteger
базовые математические операции (наподобие сложения и умножения). Взгляните на пример работы с классом BigInteger
:
static void UseBigInteger
{
Console.WriteLine("=> Use BigInteger:");
BigInteger biggy =
BigInteger.Parse("9999999999999999999999999999999999999999999999");
Console.WriteLine("Value of biggy is {0}", biggy);
Console.WriteLine("Is biggy an even value?: {0}", biggy.IsEven);
Console.WriteLine("Is biggy a power of two?: {0}", biggy.IsPowerOfTwo);
BigInteger reallyBig = BigInteger.Multiply(biggy,
BigInteger.Parse("8888888888888888888888888888888888888888888"));
Console.WriteLine("Value of reallyBig is {0}", reallyBig);
}
Важно отметить, что тип данных BigInteger
реагирует на внутренние математические операции С#, такие как +
, -
и *
. Следовательно, вместо вызова метода BigInteger.Multiply
для перемножения двух больших чисел можно использовать такой код:
BigInteger reallyBig2 = biggy * reallyBig;
К настоящему моменту вы должны понимать, что ключевые слова С#, представляющие базовые типы данных, имеют соответствующие типы в библиотеках базовых классов .NET Core, каждый из которых предлагает фиксированную функциональность. Хотя абсолютно все члены этих типов данных в книге подробно не рассматриваются, имеет смысл изучить их самостоятельно. Подробные описания разнообразных типов данных .NET Core можно найти в документации по .NET Core — скорее всего, вы будете удивлены объемом их встроенной функциональности.
Использование разделителей групп цифр (нововведение в версии 7.0)
Временами при присваивании числовой переменной крупных чисел цифр оказывается больше, чем способен отслеживать глаз. В версии C# 7.0 был введен разделитель групп цифр в виде символа подчеркивания (_
) для данных int
, long
, decimal
, double
или шестнадцатеричных типов. Версия C# 7.2 позволяет шестнадцатеричным значениям (и рассматриваемым далее новым двоичным литералам) после открывающего объявления начинаться с символа подчеркивания. Ниже представлен пример применения нового разделителя групп цифр:
static void DigitSeparators
{
Console.WriteLine("=> Use Digit Separators:");
Console.Write("Integer:"); // Целое
Console.WriteLine(123_456);
Console.Write("Long:"); // Длинное целое
Console.WriteLine(123_456_789L);
Console.Write("Float:"); // С плавающей точкой
Console.WriteLine(123_456.1234F);
Console.Write("Double:"); // С плавающей точкой двойной точности
Console.WriteLine(123_456.12);
Console.Write("Decimal:"); // Десятичное
Console.WriteLine(123_456.12M);
// Обновление в версии 7.2: шестнадцатеричное значение
// может начинаться с символа _
Console.Write("Hex:");
Console.WriteLine(0x_00_00_FF); // Шестнадцатеричное
}
Использование двоичных литералов (нововведение в версии 7.0/7.2)
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT