Section courante

A propos

Section administrative du site

Les nombres

Les nombres, en général, peuvent être divisés en deux types : le type entier et les types à virgule flottante. Les nombres de type entier sont des nombres entiers sans virgule décimale. Il peut s'agir de nombres négatifs ou positifs. Le type à virgule flottante est un nombre avec une ou plusieurs décimales. Il peut s'agir de nombres négatifs ou positifs. Le C# inclut différents types de données pour les types entiers et les types à virgule flottante en fonction de leur taille dans la mémoire et de leur capacité à entreposer des nombres.

Le schéma suivante illustre les types numériques en C# :

Types d'entiers

Les nombres de type entier sont des nombres entiers positifs ou négatifs sans points décimaux. Le C# inclut 4 types de données pour les nombres entiers : byte, short, int, et long.

byte

Le type de données byte entrepose des nombres de 0 à 255. Il occupe 8 bits dans la mémoire. Le mot clef byte est un alias de la structure Byte dans .NET. Le sbyte est identique à l'octet, mais il peut entreposer des nombres négatifs de -128 à 127. Le mot clef sbyte est un alias pour la structure SByte dans .NET.

Voici quelques exemples typiques de l'utilisation de ce type de données :

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace ByteSamples
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             byte myValue;
  13.             myValue = 4;
  14.             Console.WriteLine("myValue = " + myValue);
  15.             myValue *= 2;
  16.             Console.WriteLine("myValue = " + myValue);
  17.             myValue++;
  18.             Console.WriteLine("myValue = " + myValue); 
  19.         }
  20.     }
  21. }

on obtiendra le résultat suivant :

myValue = 4
myValue = 8
myValue = 9

Voici un exemple utilisant les limites du nombre :

  1. using System;
  2.  
  3. public class Program {
  4.      public static void Main() {
  5.           byte b1 = 255;
  6.           //byte b2 = -128; // erreur de compilation : la valeur constante '-128' ne peut pas être convertie en 'byte'
  7.           sbyte sb1 = -128;
  8.           sbyte sb2 = 127;
  9.           Console.WriteLine(Byte.MaxValue);
  10.           Console.WriteLine(Byte.MinValue);
  11.           Console.WriteLine(SByte.MaxValue);
  12.           Console.WriteLine(SByte.MinValue);
  13.      }
  14. }

short

Le type de données court est un entier signé pouvant entreposer des nombres de -32 768 à 32 767. Il occupe une mémoire de 16 bits. Le mot clef short est un alias pour la structure Int16 dans .NET. Le type de données ushort est un entier non signé. Il ne peut entreposer que des nombres positifs de 0 à 65 535. Le mot clef ushort est un alias pour la structure UInt16 dans .NET.

Voici quelques exemples typiques de l'utilisation de ce type de données :

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace UShortSamples
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             ushort myValue;
  13.             myValue = 4;
  14.             Console.WriteLine("myValue = " + myValue);
  15.             myValue *= 2;
  16.             Console.WriteLine("myValue = " + myValue);
  17.             myValue++;
  18.             Console.WriteLine("myValue = " + myValue); 
  19.         }
  20.     }
  21. }

on obtiendra le résultat suivant :

myValue = 4
myValue = 8
myValue = 9

Voici un exemple utilisant les limites du nombre :

  1. using System;
  2.  
  3. public class Program
  4. {
  5.      public static void Main() {
  6.           short s1 = -32768;
  7.           short s2 = 32767;
  8.           //short s3 = 35000; //erreur de compilation : la valeur constante « 35000 » ne peut pas être convertie en «short»
  9.           ushort us1 = 65535;
  10.           //ushort us2 = -32000; // erreur de compilation : la valeur constante '-32000' ne peut pas être convertie en «ushort»
  11.           Console.WriteLine(Int16.MaxValue);
  12.           Console.WriteLine(Int16.MinValue);
  13.           Console.WriteLine(UInt16.MaxValue);
  14.           Console.WriteLine(UInt16.MinValue);
  15.      }
  16. }

int

Le type de données int est un entier signé 32 bits. Il peut entreposer des nombres de -2 147 483 648 à 2 147 483 647. Le mot clef int est un alias de la structure Int32 dans .NET. Le type de données uint est un entier non signé de 32 bits. Le mot clef uint est un alias de la structure UInt32 dans .NET. Il peut entreposer des nombres positifs de 0 à 4 294 967 295. Utilisez éventuellement le suffixe U ou u après un nombre pour l'affecter à la variable uint.

Le type de données int est également utilisé pour les nombres hexadécimaux et binaires. Un nombre hexadécimal commence par le préfixe 0x ou 0X. À partir de la version 7.2 de C#, un nombre binaire commence par 0b ou 0B.

Voici un exemple utilisant les limites du nombre :

  1. using System;
  2.  
  3. public class Program
  4. {
  5.      public static void Main() {
  6.           int i = -2147483648;
  7.           int j = 2147483647;
  8.           //int k = 4294967294; // erreur de compilation : impossible de convertir implicitement le type « uint » en « int ».
  9.           uint ui1 = 4294967295;
  10.           //uint ui2 = -1; // erreur de compilation
  11.           Console.WriteLine(Int32.MaxValue);
  12.           Console.WriteLine(Int32.MinValue);
  13.           Console.WriteLine(UInt32.MaxValue);
  14.           Console.WriteLine(UInt32.MinValue);
  15.      }
  16. }

long

Le type de données long correspond à des entiers signés 64 bits. Il peut entreposer des nombres de -9 223 372 036 854 775 808 à 9 223 372 036 854 775 807. Utilisez le suffixe l ou L avec un numéro pour l'affecter à une variable de type de données long. Le mot clef long est un alias de la structure Int64 dans .NET.

Le type ulong entrepose les nombres positifs de 0 à 18 446 744 073 709 551 615. Si un nombre est suffixé par UL, Ul, uL, ul, LU, Lu, lU ou lu, son type de données est ulong. Le mot clef uint est un alias de la structure UInt64 dans .NET.

Voici un exemple utilisant les limites du nombre :

  1. using System;
  2.  
  3. public class Program {
  4.      public static void Main() {
  5.           long l1 = -9223372036854775808;
  6.           long l2 = 9223372036854775807;
  7.           ulong ul1 = 18223372036854775808ul;
  8.           ulong ul2 = 18223372036854775808UL;
  9.           Console.WriteLine(Int64.MaxValue); 
  10.           Console.WriteLine(Int64.MinValue); 
  11.           Console.WriteLine(UInt64.MaxValue);
  12.           Console.WriteLine(UInt64.MinValue);
  13.      }
  14. }

Types à virgule flottante

Les nombres à virgule flottante sont des nombres positifs ou négatifs avec une ou plusieurs décimales. Le C# inclut trois types de données pour les nombres à virgule flottante : float, double et decimal.

float

Le type de données float peut entreposer des nombres fractionnaires de 3.4e-038 à 3.4e+038. Il occupe 4 octets dans la mémoire. Le mot clef float est un alias d'un structure Single dans .NET. Utilisez le suffixe f ou F avec un littéral pour le rendre de type flottant.

Cet exemple permet des déclarations de type de données float :

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace FloatSamples
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             float a = 1;
  13.             float b = (float) 1.25;
  14.             float c;
  15.             Console.WriteLine("Valeur de b=" + b); 
  16.         }
  17.     }
  18. }

on obtiendra le résultat suivant :

Valeur de b=1.25

Voici un exemple montrant quelques affectations :

  1. using System;
  2.  
  3. public class Program {
  4.      public static void Main() {
  5.           float f1 = 1234567.5F;
  6.           float f2 = 1.1234567f;
  7.           Console.WriteLine(f1);
  8.           Console.WriteLine(f2);
  9.      }
  10. }

double

Le type de données double peut entreposer des nombres fractionnaires de 1.7e-308 à 1.7e+308. Il occupe 8 octets dans la mémoire. Le mot clef double est un alias de la structure Double dans .NET. Utilisez le suffixe d ou D avec un littéral pour en faire un type de données double.

Cet exemple permet d'affecter une valeur à la variable «a» :

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace DoubleSamples
  7. {
  8.     class Program
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             double a = 20.16;
  13.             double b;
  14.             Console.WriteLine("a = " + (double) a); 
  15.         }
  16.     }
  17. }

on obtiendra le résultat suivant :

a = 20.16

Voici un exemple montrant quelques affectations :

  1. using System;
  2.                          
  3. public class Program {
  4.      public static void Main() {
  5.           double d1 = 1234567891234567.5d;
  6.           double d2 = 1.1234567891234567d;
  7.           Console.WriteLine(d1); 
  8.           Console.WriteLine(d2); 
  9.      }
  10. }

decimal

Le type de données decimal peut entreposer des nombres fractionnaires de ±1,0 x 10-28 à ±7,9228 x 1028. Il occupe 16 octets dans la mémoire. La décimale est un alias de mot clef de la structure Decimal dans .NET. Le type décimal a plus de précision et une intervalle plus petite que float et double, et il est donc approprié pour les calculs financiers et monétaires. Utilisez le suffixe m ou M avec un littéral pour le rendre de type décimal.

  1. using System;
  2.  
  3. public class Program {
  4.      public static void Main() {
  5.           decimal d1 = 1234567891234567891234567.5m;
  6.           decimal d2 = 1.12345678913456791234567m;
  7.           
  8.           Console.WriteLine(d1);
  9.           Console.WriteLine(d2);
  10.      }
  11. }

Notation scientifique

Utilisez e ou E pour indiquer la puissance de 10 comme partie exposant de la notation scientifique avec float, double ou decimal :

  1. using System;
  2.  
  3. public class Program {
  4.      public static void Main() {
  5.           double d = 0.12e2;
  6.           Console.WriteLine(d); 
  7.           float f = 123.45e-2f;
  8.           Console.WriteLine(f); 
  9.           decimal m = 1.2e6m;
  10.           Console.WriteLine(m);
  11.      }
  12. }


Dernière mise à jour : Mercredi, le 29 décembre 2021