Manipuler des nombres intégral et à virgule flottante
Ce tutoriel vous apprend les types numériques en C# de manière interactive à l’aide de votre navigateur. Vous allez écrire C# et voir les résultats de la compilation et de l’exécution de votre code. Il contient une série de leçons pour explorer les nombres et les opérations mathématiques en C#. Ces leçons présentent les concepts de base du langage C#.
Conseil
Pour coller un extrait de code dans le mode focus, vous devez utiliser le raccourci clavier (Ctrl + v ou cmd + v).
Explorer les mathématiques avec des entiers
Exécutez le code suivant dans la fenêtre interactive. Sélectionnez le bouton Entrer en mode focus. Tapez ensuite le bloc de code suivant dans la fenêtre interactive, puis sélectionnez Exécuter :
int a = 18;
int b = 6;
int c = a + b;
Console.WriteLine(c);
Si vous travaillez sur votre environnement, vous devez suivre les instructions de la version locale à la place.
Vous avez vu l’une des opérations mathématiques fondamentales avec des entiers. Le type int
représente un entier, qui peut être positif ou négatif. Vous utilisez le symbole +
pour effectuer une addition. Les autres opérations mathématiques courantes avec des entiers sont les suivantes :
-
pour la soustraction*
pour la multiplication/
pour la division
Conseil
Vous pouvez explorer le contenu de ce tutoriel interactif à votre rythme en modifiant le code que vous avez écrit dans la fenêtre interactive. Il fournit des exemples que vous pouvez mettre en pratique à chaque étape.
Commencez par explorer ces différentes opérations. Modifiez la troisième ligne pour tester chacune de ces opérations. Après chaque modification, sélectionnez le bouton Exécuter.
Soustraction :
int c = a - b;
Multiplication :
int c = a * b;
Division :
int c = a / b;
Si vous le souhaitez, vous pouvez également expérimenter en écrivant plusieurs opérations mathématiques dans la même ligne.
Conseil
Durant votre exploration de C# (ou de tout autre langage de programmation), vous commettrez des erreurs d’écriture du code. Le compilateur détectera ces erreurs et vous les signalera. Si la sortie contient des messages d’erreur, vérifiez attentivement l’exemple de code ainsi que le code dans la fenêtre interactive pour identifier les corrections à apporter. Cet exercice vous aidera à mieux comprendre la structure du code C#.
Explorer l’ordre des opérations
Le langage C# définit la priorité des différentes opérations mathématiques avec à l’aide de règles cohérentes avec les règles mathématiques que vous avez apprises. La multiplication et la division ont priorité sur l’addition et la soustraction. Explorez cet ordre de priorité en exécutant le code suivant dans la fenêtre interactive :
int a = 5;
int b = 4;
int c = 2;
int d = a + b * c;
Console.WriteLine(d);
La sortie montre que la multiplication est effectuée avant l’addition.
Vous pouvez appliquer un ordre de calcul différent en mettant entre parenthèses la ou les opérations à exécuter en premier :
int a = 5;
int b = 4;
int c = 2;
int d = (a + b) * c;
Console.WriteLine(d);
Pratiquez en combinant plusieurs opérations différentes. Remplacez la quatrième ligne ci-dessus par un contenu similaire à ce qui suit :
int d = (a + b) - 6 * c + (12 * 4) / 3 + 12;
Vous avez peut-être observé un comportement intéressant des entiers. La division d’entiers produit toujours un résultat entier, même quand vous pensez que le résultat devrait inclure une partie décimale ou fractionnaire.
Si vous n’avez pas vu ce comportement, essayez le code suivant :
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
Console.WriteLine(d);
Sélectionnez de nouveau Exécuter pour afficher les résultats.
Explorer la précision et les limites des entiers
Ce dernier exemple a montré que la division d’entiers tronque le résultat.
Vous pouvez obtenir le reste à l’aide de l’opérateur de reste, le caractère %
:
int a = 7;
int b = 4;
int c = 3;
int d = (a + b) / c;
int e = (a + b) % c;
Console.WriteLine($"quotient: {d}");
Console.WriteLine($"remainder: {e}");
Le type d’entier C# diffère des entiers mathématiques d’une autre manière : le type int
a des limites minimale et maximale. Exécutez ce code dans la fenêtre interactive pour afficher ces limites :
int max = int.MaxValue;
int min = int.MinValue;
Console.WriteLine($"The range of integers is {min} to {max}");
Si un calcul produit une valeur qui dépasse ces limites, vous obtenez une condition de dépassement négatif ou dépassement positif. La réponse affichée indique la plage (d’une limite à l’autre). Ajoutez ces deux lignes dans la fenêtre interactive pour afficher un exemple :
int what = max + 3;
Console.WriteLine($"An example of overflow: {what}");
Notez que la réponse est très proche de l’entier minimal (négatif). Il en est de même pour min + 2
.
L’addition a produit un dépassement négatif des valeurs autorisées pour les entiers.
La réponse est un très grand nombre négatif, car un dépassement négatif « inclut » de la plus grande valeur d’entier possible à la plus petite.
Il existe d’autres types numériques avec une précision et des limites différentes que vous pouvez utiliser quand le type int
ne répond pas à vos besoins. Examinons ensuite ces types de nombres.
Utiliser le type double
Le type numérique double
représente un nombre à virgule flottante double précision. Ces termes vous sont peut-être inconnus. Un nombre à virgule flottante est utile pour représenter de très grands ou petits nombres non intégraux. Double précision est un terme relatif qui décrit le nombre de chiffres binaires utilisés pour stocker la valeur. Les nombres de double précision ont deux fois le nombre de chiffres binaires d’une simple précision. Sur les ordinateurs modernes, les nombres double précision sont généralement plus utilisés que les nombres simple précision. Les nombres de simple précision sont déclarés à l’aide du mot clé float
.
Explorons ce type double. Exécutez le code suivant dans la fenêtre interactive et observez le résultat :
double a = 5;
double b = 4;
double c = 2;
double d = (a + b) / c;
Console.WriteLine(d);
Notez que la réponse inclut la partie décimale du quotient. Essayez avec une expression légèrement plus complexe utilisant des doubles :
double a = 19;
double b = 23;
double c = 8;
double d = (a + b) / c;
Console.WriteLine(d);
La plage d’une valeur double est nettement supérieure à celle de valeurs entières. Exécutez le code suivant dans la fenêtre interactive :
double max = double.MaxValue;
double min = double.MinValue;
Console.WriteLine($"The range of double is {min} to {max}");
Ces valeurs s’affichent sous forme de notation scientifique. Le nombre à gauche du E
est le nombre significatif. Le nombre à droite est l’exposant, en puissance de 10.
Tout comme les nombres décimaux en mathématiques, les doubles en C# peuvent présenter des erreurs d’arrondi. Exécutez le code suivant :
double third = 1.0 / 3.0;
Console.WriteLine(third);
Vous savez que 0.3
est 3/10
et n’est pas exactement identique à 1/3
. De même, 0.33
est 33/100
. C’est plus proche de 1/3
, mais toujours pas identique.
Problème
Effectuez d’autres calculs avec des grands nombres, des petits nombres, des multiplications et des divisions à l’aide du type double
. Effectuez des calculs plus complexes.
Utiliser des types décimaux
Vous avez vu les types numériques de base en C#, à savoir les entiers et les doubles. Il existe un autre type à apprendre : le type decimal
. Le type decimal
a une plage plus petite, mais une précision supérieure à celle du type double
. Voyons voir :
decimal min = decimal.MinValue;
decimal max = decimal.MaxValue;
Console.WriteLine($"The range of the decimal type is {min} to {max}");
Notez que la plage est plus petite que celle du type double
. Vous pouvez observer la plus haute précision du type décimal en exécutant le code suivant :
double a = 1.0;
double b = 3.0;
Console.WriteLine(a / b);
decimal c = 1.0M;
decimal d = 3.0M;
Console.WriteLine(c / d);
Notez que le calcul utilisant le type décimal a plus de chiffres à droite de la virgule décimale.
Le suffixe M
des nombres permet d’indiquer comment une constante doit utiliser le type decimal
. Sinon, le compilateur utilise le type double
.
Notes
La lettre M
a été choisie comme lettre la plus distincte visuellement entre les mots clés double
et decimal
.
Problème
Maintenant que vous avez vu les différents types numériques, écrivez du code qui calcule la surface d’un cercle avec un rayon de 2,5 centimètres. Rappelez-vous que la surface d’un cercle est le rayon au carré multiplié par PI. Conseil : .NET contient une constante pour PI, à savoir Math.PI, que vous pouvez utiliser pour cette valeur. Math.PI, comme toutes les constantes déclarées dans l’espace de noms System.Math
, est une valeur double
. Pour cette raison, vous devez utiliser double
au lieu de decimal
valeurs pour ce défi.
Vous devriez obtenir une réponse comprise entre 19 et 20.
Terminer le test
Avez-vous obtenu un résultat similaire à celui-ci ?
double radius = 2.50;
double area = Math.PI * radius * radius;
Console.WriteLine(area);
Si vous le voulez, essayez d’autres formules.
Félicitations !
Vous avez terminé le tutoriel interactif « Nombres en C# ». Vous pouvez cliquer sur le lien Branches et Loops ci-dessous pour démarrer le tutoriel interactif suivant, ou vous pouvez visiter le site .NET pour télécharger le Kit de développement logiciel (SDK) .NET, créer un projet sur votre ordinateur et continuer à coder. La section « Étapes suivantes » vous ramène à ces tutoriels.
Vous pouvez en savoir plus sur les nombres en C# dans les articles suivants :
Vous avez un défi avec cette section ? Si c'est le cas, faites-nous part de vos commentaires pour que nous puissions l'améliorer.