Cursos
Módulo
Elección del tipo de datos correcto en el código de C# - Training
Elija el tipo de datos correcto para el código de varios tipos básicos usados en C#.
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
.NET proporciona un rango de enteros numéricos y primitivos de punto flotante, así como:
.NET admite tipos enteros de 8, 16, 32, 64 y 128 bits con signo y sin signo, 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 de entero admite un conjunto de operadores aritméticos estándar. La clase System.Math proporciona métodos para un conjunto más amplio de funciones matemáticas.
También puede trabajar con los bits individuales de un valor entero usando la clase System.BitConverter.
Nota
Los tipos enteros sin signo no son conformes a CLS. Para obtener más información, consulte Independencia del lenguaje y componentes independientes del lenguaje.
La estructura System.Numerics.BigInteger es un tipo inmutable que representa un entero arbitrariamente grande cuyo valor, en teoría, no tiene ningún límite superior o inferior. Los métodos del tipo BigInteger son análogos a los de otros tipos integrales.
.NET incluye los siguientes tipos de punto flotante:
Tipo | Tamaño (en bytes) | Intervalo aproximado | ¿Primitivo? | Notas |
---|---|---|---|---|
System.Half | 2 | ±65504 | No | Presentado 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 un valor no numérico e infinito. Por ejemplo, el tipo Double proporciona los siguientes valores: Double.NaN, Double.NegativeInfinity y Double.PositiveInfinity. Los métodos Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity y Double.IsNegativeInfinity se usan para comprobar estos valores especiales.
Cada tipo de punto flotante admite un conjunto de operadores aritméticos estándar. La clase System.Math proporciona métodos para un conjunto más amplio de funciones matemáticas. .NET Core 2.0 y versiones posteriores incluyen la clase System.MathF que proporciona métodos que aceptan argumentos del tipo Single.
También puede trabajar con los bits individuales de valores Double, Single y Half mediante la clase System.BitConverter. La estructura System.Decimal tiene sus propios métodos, Decimal.GetBits y Decimal(Int32[]), para trabajar con los bits individuales de un valor decimal, así como su propio conjunto de métodos para realizar algunas operaciones matemáticas adicionales.
Los tipos Double, Single y Half están diseñados para usarse con valores que, por su naturaleza, no son precisos (por ejemplo, la distancia entre dos estrellas) y con aplicaciones en las que no se necesita un alto grado de precisión ni un mínimo error de redondeo. Use el tipo System.Decimal para los casos en los que se necesite una mayor precisión y se deban minimizar los errores de redondeo.
Nota
El tipo Decimal no elimina la necesidad de redondeo. En su lugar, minimiza los errores debido al redondeo.
La estructura System.Numerics.Complex representa un número complejo, es decir, un número con una parte de número real y una parte de número imaginario. Admite un conjunto estándar de operadores de aritmética, comparación, igualdad, conversión explícita e implícita, así como métodos matemáticos, algebraicos y trigonométricos.
El espacio de nombres System.Numerics incluye un conjunto de tipos habilitados para SIMD para .NET. Las operaciones SIMD (Single Instruction Multiple Data) se pueden paralelizar en el nivel de hardware. Eso aumenta el rendimiento de los cálculos vectorizados, que son comunes en aplicaciones matemáticas, científicas y gráficas.
Los tipos habilitados para SIMD para .NET incluyen los siguientes:
Los tipos Vector2, Vector3 y Vector4, que representan vectores con los valores Single 2, 3 y 4.
Dos tipos de matriz: Matrix3x2, que representa una matriz de 3x2, y Matrix4x4, que representa una matriz de 4x4.
El tipo Plane, que representa un plano en un espacio tridimensional.
El tipo Quaternion, que representa un vector que se usa para codificar rotaciones físicas tridimensionales.
El tipo Vector<T>, que representa un vector de un tipo numérico especificado y proporciona un amplio conjunto de operadores que aprovechan la compatibilidad con SIMD. El recuento de una instancia Vector<T> 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 tipo Vector<T> se incluye con .NET Core, y .NET 5 y versiones posteriores, pero no con .NET Framework. Si usa .NET Framework, instale el paquete NuGet System.Numerics.Vectors para acceder a este tipo.
Los tipos habilitados para SIMD se implementan de tal forma que se pueden utilizar con hardware no habilitado para SIMD o compiladores JIT. Para aprovechar las instrucciones de SIMD, las aplicaciones de 64 bits las debe ejecutar el entorno de ejecución que usa el compilador RyuJIT, que se incluye en .NET Core, y en .NET Framework 4.6 y versiones posteriores. Agrega compatibilidad con SIMD cuando se usan procesadores de 64 bits como destino.
Para obtener más información, vea Uso de tipos numéricos acelerados por SIMD.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Cursos
Módulo
Elección del tipo de datos correcto en el código de C# - Training
Elija el tipo de datos correcto para el código de varios tipos básicos usados en C#.