Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
.NET fournit une plage d’entiers numériques et de primitives à virgule flottante, ainsi que :
- System.Half, qui représente un nombre à virgule flottante demi-précision.
- System.Decimal, qui représente un nombre à virgule flottante décimale.
- System.Numerics.BigInteger, qui est un type intégral sans limite supérieure ou inférieure théorique.
- System.Numerics.Complex, qui représente des nombres complexes.
- Ensemble de types compatibles SIMD au sein de l’espace de noms System.Numerics.
Types d'entier
.NET prend en charge les types entiers signés et non signés 8 bits, 16 bits, 32 bits, 64 bits et 128 bits, répertoriés dans les tableaux suivants.
Types entiers signés
Catégorie | Taille (en octets) | Valeur minimale | Valeur maximale |
---|---|---|---|
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 | 1:27 |
System.IntPtr (dans processus 32 bits) | 4 | -2,147,483,648 | 2 147 483 647 |
System.IntPtr (dans processus 64 bits) | 8 | -9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
Types entiers non signés
Catégorie | Taille (en octets) | Valeur minimale | Valeur maximale |
---|---|---|---|
System.Byte | 1 | 0 | 2:55 |
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 (dans processus 32 bits) | 4 | 0 | 4,294,967,295 |
System.UIntPtr (dans processus 64 bits) | 8 | 0 | 18,446,744,073,709,551,615 |
Chaque type entier prend en charge un ensemble d’opérateurs arithmétiques standard. La System.Math classe fournit des méthodes pour un ensemble plus large de fonctions mathématiques.
Vous pouvez également utiliser les bits individuels dans une valeur entière à l’aide de la System.BitConverter classe.
Remarque
Les types entiers non signés ne sont pas conformes CLS. Pour plus d’informations, consultez Les composants indépendants de la langue et de l’indépendance du langage.
BigInteger
La System.Numerics.BigInteger structure est un type immuable qui représente un entier arbitrairement volumineux dont la valeur en théorie n’a pas de limites supérieures ou inférieures. Les méthodes du BigInteger type sont étroitement parallèles à celles des autres types intégraux.
Types virgule flottante
.NET inclut les types à virgule flottante suivants :
Catégorie | Taille (en octets) | Plage approximative | Primitif? | Remarques |
---|---|---|---|---|
System.Half | 2 | ±65504 | Non | Introduit dans .NET 5 |
System.Single | 4 | ±3,4 x 1038 | Oui | |
System.Double | 8 | ±1.7 × 10308 | Oui | |
System.Decimal | 16 | ±7.9228 x 1028 | Non |
Les types Half, Single et Double prennent en charge des valeurs spéciales qui représentent une valeur NaN (N’est pas un nombre) et l’infini. Par exemple, le Double type fournit les valeurs suivantes : Double.NaN, Double.NegativeInfinity, et Double.PositiveInfinity. Vous utilisez les méthodes Double.IsNaN, Double.IsInfinity, Double.IsPositiveInfinity, et Double.IsNegativeInfinity pour tester ces valeurs spéciales.
Chaque type à virgule flottante prend en charge un ensemble d’opérateurs arithmétiques standard. La System.Math classe fournit des méthodes pour un ensemble plus large de fonctions mathématiques. .NET Core 2.0 et versions ultérieures inclut la System.MathF classe, qui fournit des méthodes qui acceptent des arguments du Single type.
Vous pouvez également travailler avec les bits individuels de valeurs Double, Single et Half en utilisant la classe System.BitConverter. La structure System.Decimal a ses propres méthodes, Decimal.GetBits et 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.
Les types Double, Single, et Half sont destinés à être utilisés pour des valeurs qui, par leur nature, sont imprécises (par exemple, la distance entre deux étoiles) et pour des applications où un degré élevé de précision et une faible erreur d'arrondi ne sont pas nécessaires. Utilisez le System.Decimal type pour les cas où une plus grande précision est requise et les erreurs d’arrondi doivent être réduites.
Remarque
Le type Decimal n’élimine pas la nécessité d’arrondi. Au lieu de cela, il réduit les erreurs dues à l’arrondi.
Complexe
La System.Numerics.Complex structure représente un nombre complexe, c’est-à-dire un nombre avec une partie numérique réelle et une partie de nombre imaginaire. Il prend en charge un ensemble standard d’opérateurs arithmétiques, de comparaison, d’égalité, d’opérateurs de conversion explicites et implicites, ainsi que des méthodes mathématiques, algébriques et trigonométriques.
Types SIMD
L’espace de noms System.Numerics comprend un ensemble de types compatibles SIMD pour .NET. Les opérations SIMD (Instruction unique multiple données) peuvent être parallélisées au niveau matériel. Cela augmente le débit des calculs vectorisés, qui sont courants dans les applications mathématiques, scientifiques et graphiques.
Les types .NET activés pour SIMD comprennent les suivants :
Les types Vector2, Vector3 et Vector4 représentent des vecteurs avec 2, 3 et 4 valeurs de Single.
Deux types de matrices, Matrix3x2qui représente une matrice 3x2 et Matrix4x4, qui représente une matrice 4x4.
Type Plane , qui représente un plan dans un espace tridimensionnel.
Type Quaternion , qui représente un vecteur utilisé pour encoder des rotations physiques tridimensionnelles.
Type Vector<T> , qui représente un vecteur d’un type numérique spécifié et fournit un large ensemble d’opérateurs qui bénéficient de la prise en charge SIMD. Le nombre d’instances Vector<T> est fixe, mais sa valeur Vector<T>.Count dépend du processeur de l’ordinateur, sur lequel le code est exécuté.
Remarque
Le Vector<T> type est inclus avec .NET Core et .NET 5+, mais pas .NET Framework. Si vous utilisez .NET Framework, installez le package NuGet System.Numerics.Vectors pour accéder à ce type.
Les types compatibles SIMD sont implémentés de telle sorte qu’ils puissent être utilisés avec du matériel ou des compilateurs JIT non compatibles SIMD. Pour tirer parti des instructions SIMD, vos applications 64 bits doivent être exécutées par le runtime qui utilise le compilateur RyuJIT, inclus dans .NET Core et dans .NET Framework 4.6 et versions ultérieures. Il ajoute la prise en charge SIMD lors du ciblage de processeurs 64 bits.
Pour plus d’informations, consultez Utiliser des types numériques accélérés par SIMD.