.NET Core - numérico

O .NET Core oferece suporte às primitivas numéricas integrais e de ponto flutuante padrão. Ele também suporta os seguintes tipos -

  • System.Numerics.BigInteger que é um tipo integral sem limite superior ou inferior.

  • System.Numerics.Complex é um tipo que representa números complexos.

  • Um conjunto de tipos de vetor habilitados para Single Instruction Multiple Data (SIMD) no namespace System.Numerics.

Tipos integrais

O .NET Core oferece suporte a inteiros assinados e não assinados de diferentes intervalos de um byte a oito bytes de comprimento. Todos os inteiros são tipos de valor.

A tabela a seguir representa os tipos integrais e seus tamanhos;

Tipo Assinado / Não Assinado Tamanho (bytes) Valor mínimo Valor máximo
Byte Sem sinal 1 0 255
Int16 Assinado 2 -32.768 32.767
Int32 Assinado 4 -2.147.483.648 2.147.483.647
Int64 Assinado 8 -9.223.372.036.854.775.808 9.223.372.036.854.775.807
SByte Assinado 1 -128 127
UInt16 Sem sinal 2 0 65.535
UInt32 Sem sinal 4 0 4.294.967.295
UInt64 Sem sinal 8 0 18.446.744.073.709.551.615

Cada tipo integral oferece suporte a um conjunto padrão de operadores de aritmética, comparação, igualdade, conversão explícita e conversão implícita.

Você também pode trabalhar com os bits individuais em um valor inteiro usando a classe System.BitConverter.

Tipos de ponto flutuante

O .NET Core inclui três tipos primitivos de ponto flutuante, que são mostrados na tabela a seguir.

Tipo Tamanho (bytes) Valor mínimo Valor máximo
Duplo 8 −1,79769313486232e308 1.79769313486232e308
solteiro 4 -3,402823e38 3.402823e38
Decimal 16 −79.228.162.514.264.337.593,5 43.950.335 79.228.162.514.264.337.593.543,9 50.335
  • Cada tipo de ponto flutuante oferece suporte a um conjunto padrão de operadores de aritmética, comparação, igualdade, conversão explícita e conversão implícita.

  • Você também pode trabalhar com os bits individuais em valores Double e Single usando a classe BitConverter.

  • A estrutura Decimal possui seus próprios métodos, Decimal.GetBits e Decimal.Decimal (Int32 ()), para trabalhar com bits individuais de um valor decimal, bem como seu próprio conjunto de métodos para realizar algumas operações matemáticas adicionais.

BigInteger

  • System.Numerics.BigInteger é um tipo imutável que representa um número inteiro arbitrariamente grande cujo valor, em teoria, não tem limites superior ou inferior.

  • Os métodos do tipo BigInteger são estreitamente paralelos aos dos outros tipos integrais.

Complexo

  • O tipo System.Numerics.Complex representa um número complexo, ou seja, um número com uma parte de número real e uma parte de número imaginário

  • Ele suporta um conjunto padrão de aritméticos, comparação, igualdade, conversão explícita e operadores de conversão implícita, bem como métodos matemáticos, algébricos e trigonométricos.

SIMD

  • O namespace Numerics inclui um conjunto de tipos de vetores habilitados para SIMD para .NET Core.

  • O SIMD permite que algumas operações sejam paralelizadas no nível do hardware, o que resulta em grandes melhorias de desempenho em aplicativos matemáticos, científicos e gráficos que realizam cálculos sobre vetores.

  • Os tipos de vetor habilitados para SIMD no .NET Core incluem o seguinte -

    • Tipos System.Numerics.Vector2, System.Numerics.Vector3 e System.Numerics.Vector4, que são vetores de 2, 3 e 4 dimensões do tipo Único.

    • A estrutura Vector <T> que permite criar um vetor de qualquer tipo numérico primitivo. Os tipos numéricos primitivos incluem todos os tipos numéricos no namespace System, exceto Decimal.

    • Dois tipos de matriz, System.Numerics.Matrix3 × 2, que representa uma matriz 3 × 2; e System.Numerics.Matrix4 × 4, que representa uma matriz 4 × 4.

    • O tipo System.Numerics.Plane, que representa um plano tridimensional, e o tipo System.Numerics.Quaternion, que representa um vetor usado para codificar rotações físicas tridimensionais.