.NET Core - Numérique

.NET Core prend en charge les primitives intégrales numériques standard et à virgule flottante. Il prend également en charge les types suivants -

  • System.Numerics.BigInteger qui est un type intégral sans limite supérieure ou inférieure.

  • System.Numerics.Complex est un type qui représente des nombres complexes.

  • Un ensemble de types de vecteurs compatibles SIMD (Single Instruction Multiple Data) dans l'espace de noms System.Numerics.

Types intégraux

.NET Core prend en charge les entiers signés et non signés de différentes plages de un octet à huit octets de longueur. Tous les entiers sont des types valeur.

Le tableau suivant représente les types intégraux et leur taille;

Type Signé / Non signé Taille (octets) Valeur minimum Valeur maximum
Octet Non signé 1 0 255
Int16 Signé 2 −32 768 32 767
Int32 Signé 4 −2 147 483 648 2 147 483 647
Int64 Signé 8 −9 223 372 036 854 775 808 9 223 372 036 854 775 807
SByte Signé 1 -128 127
UInt16 Non signé 2 0 65 535
UInt32 Non signé 4 0 4 294 967 295
UInt64 Non signé 8 0 18 446 744 073 709 551 615

Chaque type intégral prend en charge un ensemble standard d'opérateurs d'arithmétique, de comparaison, d'égalité, de conversion explicite et de conversion implicite.

Vous pouvez également utiliser les bits individuels dans une valeur entière à l'aide de la classe System.BitConverter.

Types à virgule flottante

.NET Core comprend trois types de virgule flottante primitifs, qui sont indiqués dans le tableau suivant.

Type Taille (octets) Valeur minimum Valeur maximum
Double 8 −1,79769313486232e308 1.79769313486232e308
Célibataire 4 −3,402823e38 3.402823e38
Décimal 16 −79,228,162,514,264,337,593,5 43,950,335 79,228,162,514,264,337,593,543,9 50,335
  • Chaque type à virgule flottante prend en charge un ensemble standard d'opérateurs d'arithmétique, de comparaison, d'égalité, de conversion explicite et de conversion implicite.

  • Vous pouvez également travailler avec les bits individuels dans les valeurs Double et Simple en utilisant la classe BitConverter.

  • La structure Decimal a ses propres méthodes, Decimal.GetBits et Decimal.Decimal (Int32 ()), pour travailler avec les bits individuels d'une valeur décimale, ainsi que son propre ensemble de méthodes pour effectuer des opérations mathématiques supplémentaires.

BigInteger

  • System.Numerics.BigInteger est un type immuable qui représente un entier arbitrairement grand dont la valeur en théorie n'a pas de limites supérieures ou inférieures.

  • Les méthodes du type BigInteger sont étroitement parallèles à celles des autres types intégraux.

Complexe

  • Le type System.Numerics.Complex représente un nombre complexe, c'est-à-dire un nombre avec une partie de nombre réel et une partie de nombre imaginaire

  • Il prend en charge un ensemble standard d'opérateurs d'arithmétique, de comparaison, d'égalité, de conversion explicite et de conversion implicite, ainsi que des méthodes mathématiques, algébriques et trigonométriques.

SIMD

  • L'espace de noms Numerics comprend un ensemble de types de vecteurs compatibles SIMD pour .NET Core.

  • SIMD permet de paralléliser certaines opérations au niveau matériel, ce qui se traduit par d'énormes améliorations de performances dans les applications mathématiques, scientifiques et graphiques qui effectuent des calculs sur des vecteurs.

  • Les types de vecteurs compatibles SIMD dans .NET Core incluent les éléments suivants:

    • Types System.Numerics.Vector2, System.Numerics.Vector3 et System.Numerics.Vector4, qui sont des vecteurs à 2, 3 et 4 dimensions de type Single.

    • La structure Vector <T> qui vous permet de créer un vecteur de n'importe quel type numérique primitif. Les types numériques primitifs incluent tous les types numériques dans l'espace de noms System à l'exception de Decimal.

    • Deux types de matrice, System.Numerics.Matrix3 × 2, qui représente une matrice 3 × 2; et System.Numerics.Matrix4 × 4, qui représente une matrice 4 × 4.

    • Le type System.Numerics.Plane, qui représente un plan tridimensionnel, et le type System.Numerics.Quaternion, qui représente un vecteur utilisé pour coder les rotations physiques tridimensionnelles.