Nota
O acceso a esta páxina require autorización. Pode tentar iniciar sesión ou modificar os directorios.
O acceso a esta páxina require autorización. Pode tentar modificar os directorios.
.NET proporciona un intervalo de enteros numéricos y primitivos de punto flotante, así como:
- System.Half, que representa un número de punto flotante de precisión media.
- System.Decimal, que representa un número de punto flotante decimal.
- System.Numerics.BigInteger, que es un tipo entero sin límite superior o inferior teórico.
- System.Numerics.Complex, que representa números complejos.
- Conjunto de tipos habilitados para SIMD en el espacio de nombres System.Numerics.
Tipos enteros
.NET admite tipos enteros con signo y sin signo de 8 bits, 16 bits, 32 bits, 64 bits y 128 bits, que se enumeran en las tablas siguientes.
Tipos enteros con signo
| Tipo | Tamaño (en bytes) | Valor mínimo | Valor máximo |
|---|---|---|---|
| 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 (en procesos de 32 bits) | 4 | -2,147,483,648 | 2,147,483,647 |
| System.IntPtr (en procesos de 64 bits) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Tipos enteros sin signo
| Tipo | Tamaño (en bytes) | Valor mínimo | Valor máximo |
|---|---|---|---|
| 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 (en procesos de 32 bits) | 4 | 0 | 4,294,967,295 |
| System.UIntPtr (en procesos de 64 bits) | 8 | 0 | 18,446,744,073,709,551,615 |
Cada tipo entero admite un conjunto de operadores aritméticos estándar. La System.Math clase proporciona métodos para un conjunto más amplio de funciones matemáticas.
También puede trabajar con los bits individuales en un valor entero mediante la clase System.BitConverter.
Nota:
Los tipos enteros sin signo no son compatibles con CLS. Para obtener más información, consulte Independencia del lenguaje y componentes independientes del lenguaje.
BigInteger
La System.Numerics.BigInteger estructura es un tipo inmutable que representa un entero arbitrariamente grande cuyo valor en teoría no tiene límites superiores o inferiores. Los métodos del tipo BigInteger se asemejan estrechamente a los de otros tipos integrales.
Tipos de punto flotante
.NET incluye los siguientes tipos de punto flotante:
| Tipo | Tamaño (en bytes) | Intervalo aproximado | ¿Primitivo? | Notas |
|---|---|---|---|---|
| System.Half | 2 | ±65504 | No | Introducido en .NET 5 |
| System.Single | 4 | ±3,4 x 1038 | Sí | |
| System.Double | 8 | ±1,7 × 10308 | Sí | |
| System.Decimal | 16 | ±7.9228 x 1028 | No |
Los tipos Half, Single y Double admiten valores especiales que representan no es un número e infinito. Por ejemplo, el Double tipo proporciona los siguientes valores: Double.NaN, Double.NegativeInfinityy Double.PositiveInfinity. Use los Double.IsNaNmétodos , Double.IsInfinity, Double.IsPositiveInfinityy Double.IsNegativeInfinity para probar estos valores especiales.
Cada tipo de punto flotante admite un conjunto de operadores aritméticos estándar. La System.Math clase proporciona métodos para un conjunto más amplio de funciones matemáticas. .NET Core 2.0 y versiones posteriores incluyen la System.MathF clase , que proporciona métodos que aceptan argumentos del Single tipo.
También puede trabajar con los bits individuales de Double, Single, y Half mediante la clase System.BitConverter. La System.Decimal estructura tiene sus propios métodos, Decimal.GetBits y Decimal(Int32[]), para trabajar con bits individuales de un valor decimal, así como su propio conjunto de métodos para realizar algunas operaciones matemáticas adicionales.
Los Doubletipos , Singley Half están diseñados para usarse para los valores que, por su naturaleza, son imprecisos (por ejemplo, la distancia entre dos estrellas) y para las aplicaciones en las que no se requiere un alto grado de precisión y un pequeño error de redondeo. Use el System.Decimal tipo para los casos en los que se requiere mayor precisión y se deben minimizar los errores de redondeo.
Nota:
El Decimal tipo no elimina la necesidad de redondear. En su lugar, minimiza los errores debidos al redondeo.
Complejo
La System.Numerics.Complex estructura representa un número complejo, es decir, un número con una parte de número real y una parte de número imaginaria. Admite un conjunto estándar de operadores de conversión aritméticos, de comparación, de igualdad, explícitos e implícitos, así como de métodos matemáticos, algebraicos y trigonométricos.
Tipos habilitados para SIMD
El espacio de nombres System.Numerics incluye un conjunto de tipos habilitados para SIMD para .NET. Las operaciones SIMD (datos múltiples de instrucción única) se pueden paralelizar en el nivel de hardware. Esto aumenta el rendimiento de los cálculos vectorizados, que son comunes en las aplicaciones matemáticas, científicas y gráficas.
Los tipos habilitados para SIMD de .NET incluyen lo siguiente:
Los Vector2tipos , Vector3y Vector4 , que representan vectores con 2, 3 y 4 Single valores.
Dos tipos de matriz, , Matrix3x2que representa una matriz de 3x2 y Matrix4x4, que representa una matriz 4x4.
Tipo Plane , que representa un plano en espacio tridimensional.
Tipo Quaternion , que representa un vector que se usa para codificar rotaciones físicas tridimensionales.
El Vector<T> tipo, que representa un vector de un tipo numérico especificado y proporciona un amplio conjunto de operadores que se benefician de la compatibilidad con SIMD. El recuento de una Vector<T> instancia es fijo, pero su valor Vector<T>.Count depende de la CPU de la máquina, en la que se ejecuta el código.
Nota:
El Vector<T> tipo se incluye con .NET Core y .NET 5+, pero no con .NET Framework. Si usa .NET Framework, instale el paquete NuGet System.Numerics.Vectors para obtener acceso a este tipo.
Los tipos habilitados para SIMD se implementan de forma que se pueden usar con compiladores JIT o hardware no habilitados para SIMD. Para aprovechar las instrucciones de SIMD, el entorno de ejecución debe ejecutar las aplicaciones de 64 bits que usa el compilador RyuJIT, que se incluye en .NET Core y en .NET Framework 4.6 y versiones posteriores. Agrega compatibilidad con SIMD al tener como destino procesadores de 64 bits.
Para obtener más información, consulte Uso de tipos numéricos acelerados por SIMD.