Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
.NET предоставляет многочисленные примитивы целочисленных и с плавающей точкой типов, а также:
- System.Half, представляющий число с плавающей запятой половинной точности.
- System.Decimal, представляющий десятичное число с плавающей запятой.
- System.Numerics.BigInteger, который является целочисленным типом без теоретических верхних или нижних границ.
- System.Numerics.Complex, представляющий сложные числа.
- Набор типов с поддержкой SIMD в System.Numerics пространстве имен.
Целые типы
.NET поддерживает как подписанные, так и неподписанные 8-разрядные, 16-разрядные, 32-разрядные, 64-разрядные и 128-разрядные целые типы, перечисленные в следующих таблицах.
Типы целых чисел со знаком
Тип | Размер (в байтах) | Минимальное значение | Максимальное значение |
---|---|---|---|
System.Int16 | 2 | -32,768 | 32,767 |
System.Int32 | 4 | -2,147,483,648 | 2,147,483,647 |
System.Int64 | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
System.Int128 | 16 | −170 141 183 460 469 231 731 687 303 715 884 105 728 | 170,141,183,460,469,231,731,687,303,715,884,105,727 |
System.SByte | 1 | -128 | 127 |
System.IntPtr (в 32-разрядном процессе) | 4 | -2,147,483,648 | 2,147,483,647 |
System.IntPtr (в 64-разрядном процессе) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Типы целых чисел без знака
Тип | Размер (в байтах) | Минимальное значение | Максимальное значение |
---|---|---|---|
System.Byte | 1 | 0 | 255 |
System.UInt16 | 2 | 0 | 65 535 |
System.UInt32 | 4 | 0 | 4,294,967,295 |
System.UInt64 | 8 | 0 | 18,446,744,073,709,551,615 |
System.UInt128 | 16 | 0 | 340,282,366,920,938,463,463,374,607,431,768,211,455 |
System.UIntPtr (в 32-разрядном процессе) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (в 64-разрядном процессе) | 8 | 0 | 18,446,744,073,709,551,615 |
Каждый тип целых чисел поддерживает набор стандартных арифметических операторов. Класс System.Math предоставляет методы для более широкого набора математических функций.
Вы также можете работать с отдельными битами в целочисленном значении System.BitConverter с помощью класса.
Замечание
Типы целых чисел без знака не соответствуют CLS. Дополнительные сведения см. в статье о независимости языка и независимых от языка компонентах.
BigInteger
Структура System.Numerics.BigInteger является неизменяемым типом, который представляет произвольно большое целое число, значение которого в теории не имеет верхних или нижних границ. Методы BigInteger типа тесно параллельны другим целочисленным типам.
Типы с плавающей запятой
.NET включает следующие типы с плавающей запятой:
Тип | Размер (в байтах) | Приблизительный диапазон | Примитивный? | Примечания. |
---|---|---|---|---|
System.Half | 2 | ±65504 | нет | Представлено в .NET 5 |
System.Single | 4 | ±3.4 x 1038 | Да | |
System.Double | 8 | ±1.7 ×10 308 | Да | |
System.Decimal | 16 | ±7.9228 x 1028 | нет |
Типы Half, Single, и Double поддерживают специальные значения, которые представляют такие понятия, как не число и бесконечность. Например, Double тип предоставляет следующие значения: Double.NaN, Double.NegativeInfinityи Double.PositiveInfinity. Вы используете методы Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity и Double.IsNegativeInfinity для проверки этих специальных значений.
Каждый тип с плавающей запятой поддерживает набор стандартных арифметических операторов. Класс System.Math предоставляет методы для более широкого набора математических функций. .NET Core 2.0 и более поздних версий включает System.MathF класс, который предоставляет методы, принимаюющие аргументы Single типа.
Вы также можете работать с отдельными битами в Double, Single, и Half значениями с помощью System.BitConverter класса. Структура System.Decimal имеет собственные методы, Decimal.GetBits и Decimal(Int32[])для работы с отдельными битами десятичного значения, а также собственный набор методов для выполнения некоторых дополнительных математических операций.
Типы Double, Single, и Half предназначены для использования в случаях, когда значения по своей природе являются неточными (например, расстояние между двумя звездами) и для приложений, в которых не требуется высокая степень точности и малая ошибка округления. Используйте тип System.Decimal для случаев, когда требуется более высокая точность, и ошибки округления должны быть сведены к минимуму.
Замечание
Тип Decimal не устраняет необходимость округления. Скорее, это сводит к минимуму ошибки из-за округления.
Сложный
Структура System.Numerics.Complex представляет сложное число, то есть число с реальной частью числа и мнимой частью числа. Он поддерживает стандартный набор арифметических, сравнения, равенства, явных и неявных операторов преобразования, а также математических, алгебраических и тригонометрических методов.
Типы с поддержкой SIMD
Пространство System.Numerics имен содержит набор типов с поддержкой .NET SIMD. Операции SIMD (одна инструкция с несколькими данными) можно параллелизировать на аппаратном уровне. Это повышает пропускную способность векторных вычислений, которые распространены в математических, научных и графических приложениях.
Типы с поддержкой .NET SIMD включают следующие:
Типы Vector2, Vector3 и Vector4, которые представляют собой векторы с 2, 3 и 4 значениями Single.
Два типа матрицы, Matrix3x2представляющая матрицу 3x2 и Matrix4x4представляющую матрицу 4x4.
Тип Plane , представляющий плоскость в трехмерном пространстве.
Тип Quaternion , представляющий вектор, используемый для кодирования трехмерных физических поворотов.
Тип Vector<T> , представляющий вектор указанного числового типа и предоставляющий широкий набор операторов, которые получают поддержку SIMD. Число экземпляров Vector<T> исправлено, но его значение Vector<T>.Count зависит от ЦП компьютера, от которого выполняется код.
Замечание
Тип Vector<T> включается в .NET Core и .NET 5+, но не .NET Framework. Если вы используете .NET Framework, установите пакет NuGet System.Numerics.Vectors , чтобы получить доступ к этому типу.
Типы с поддержкой SIMD реализуются таким образом, что их можно использовать с аппаратным оборудованием, не поддерживающим SIMD, или компиляторами JIT. Чтобы воспользоваться инструкциями SIMD, 64-разрядные приложения должны запускаться средой выполнения, которая использует компилятор RyuJIT, который входит в .NET Core и в .NET Framework 4.6 и более поздних версиях. Он добавляет поддержку SIMD при выборе 64-разрядных процессоров.
Дополнительные сведения см. в разделе "Использование числовых типов с ускорением SIMD".
См. также
- Стандартные строки числового формата
- Числовые типы с плавающей запятой в C#