AIDE .NET

C# Round (Comment ça marche pour les développeurs)

Publié août 29, 2023
Partager:

L'arrondissement des nombres est un concept mathématique fondamental, souvent appliqué dans des scénarios du monde réel. En C#, l'optionméthode Math.Round (mathématique) facilite cette opération en vous permettant d'arrondir les valeurs à la valeur intégrale la plus proche ou à un nombre spécifique de décimales. Ce tutoriel aborde les nuances de l'arrondi en C# et illustre la manière dont vous pouvez exploiter cette méthode puissante.

Introduction à l'arrondi

Arrondir un nombre consiste à l'ajuster à la valeur intégrale ou décimale la plus proche afin de le simplifier ou de le rendre conforme à une exigence particulière. Par exemple, si vous avez le nombre décimal 3.14159, l'arrondi à deux décimales donnera 3.14.

Pourquoi des chiffres ronds ?

  1. simplicité : Les nombres arrondis sont souvent plus faciles à lire et à comprendre.

  2. Precision : Dans certains cas, il est plus efficace d'opérer sur des valeurs arrondies plutôt que sur des valeurs exactes, en particulier dans des contextes tels que les calculs de devises.

Scénarios d'arrondi courants

  1. Nearest Integer : Arrondir une valeur décimale au nombre entier le plus proche.

  2. Nombre spécifié de décimales : Arrondir un nombre à un nombre spécifique de décimales, comme arrondir 15.678 à deux décimales serait 15.68.

Les bases de l'arrondi en C# ;

C# offre un système robuste d'arrondi grâce à la méthode Math.Round. Cette méthode peut accepter divers arguments et paramètres pour personnaliser l'opération d'arrondi.

Arrondir à la valeur intégrale la plus proche

La forme la plus simple de la méthode Math.Round arrondit une valeur double à la valeur intégrale la plus proche. Si le nombre donné est équidistant de deux entiers, il est arrondi au nombre pair le plus proche, souvent appelé "arrondi du banquier"

double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
double originalValue = 4.5;
double roundedValue = Math.Round(originalValue);
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}");
Dim originalValue As Double = 4.5
Dim roundedValue As Double = Math.Round(originalValue)
Console.WriteLine($"Original: {originalValue}, Rounded: {roundedValue}")
VB   C#

Dans l'exemple ci-dessus, *4.5 est équidistant de 4 et de 5. Puisque 4 est le nombre pair le plus proche, la méthode renvoie 4.

Arrondir à un nombre spécifique de décimales

Vous pouvez également arrondir une virgule flottante en double précision à un nombre spécifié de décimales à l'aide d'un argument supplémentaire :

double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 7.34567;
double rounded = Math.Round(value, 2); // Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 7.34567
Dim rounded As Double = Math.Round(value, 2) ' Rounds to two decimal places
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
VB   C#

La méthode arrondit la valeur originale 7.34567 à 7.35 puisque nous avons spécifié d'arrondir à deux décimales.

Modes d'arrondi au point médian

Lorsqu'il s'agit de valeurs médianes(celles qui sont équidistantes de deux valeurs potentiellement arrondies)c# offre un mode MidpointRounding pour déterminer comment ces valeurs sont arrondies.

Arrondi par défaut

Par défaut, Math.Round arrondit les valeurs du point médian au nombre pair le plus proche.

double valueOne = 4.5;  // Rounded to 4
double valueTwo = 5.5;  // Rounded to 6
double valueOne = 4.5;  // Rounded to 4
double valueTwo = 5.5;  // Rounded to 6
Dim valueOne As Double = 4.5 ' Rounded to 4
Dim valueTwo As Double = 5.5 ' Rounded to 6
VB   C#

Spécifier un mode MidpointRounding (arrondi au point médian)

Pour mieux contrôler l'opération d'arrondi des valeurs du point médian, vous pouvez passer en paramètre un mode MidpointRounding spécifique :

double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
double value = 5.5;
double rounded = Math.Round(value, 0, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {value}, Rounded: {rounded}");
Dim value As Double = 5.5
Dim rounded As Double = Math.Round(value, 0, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {value}, Rounded: {rounded}")
VB   C#

Dans cet exemple, le mode MidpointRounding.AwayFromZero permet de s'assurer que le nombre est arrondi à 6.

Utilisation de Math.Round avec des valeurs décimales

Nous avons parlé de l'arrondi des valeurs doubles, mais C# prend également en charge l'arrondi des valeurs décimales. Les méthodes sont analogues, mais elles fonctionnent avec le type de données décimal. En voici un exemple

decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
decimal decimalValue = 5.678m;
decimal roundedDecimal = Math.Round(decimalValue, 1); // Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}");
Dim decimalValue As Decimal = 5.678D
Dim roundedDecimal As Decimal = Math.Round(decimalValue, 1) ' Rounds to one decimal place
Console.WriteLine($"Original: {decimalValue}, Rounded: {roundedDecimal}")
VB   C#

Le nombre décimal 5.678 s'arrondit à 5.7 lorsqu'il est arrondi à une décimale.

Fonctions d'arrondi personnalisées

Parfois, vous pouvez avoir besoin d'effectuer des opérations d'arrondi spécifiques qui ne sont pas couvertes par la méthode standard Math.Round. L'écriture de fonctions d'arrondi personnalisées vous donne un contrôle total sur le processus.

L'arrondi

Pour toujours arrondir à l'entier le plus proche, vous pouvez utiliser la méthode Math.Ceiling :

double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
double value = 4.3;
double roundedUp = Math.Ceiling(value);
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}");
Dim value As Double = 4.3
Dim roundedUp As Double = Math.Ceiling(value)
Console.WriteLine($"Original: {value}, Rounded Up: {roundedUp}")
VB   C#

Le nombre décimal 4.3 est arrondi à 5.

Arrondir à la baisse

Inversement, l'arrondi à la valeur intégrale la plus proche se fait à l'aide de la méthode Math.Floor :

double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
double value = 4.7;
double roundedDown = Math.Floor(value);
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}");
Dim value As Double = 4.7
Dim roundedDown As Double = Math.Floor(value)
Console.WriteLine($"Original: {value}, Rounded Down: {roundedDown}")
VB   C#

Le nombre décimal 4.7 est arrondi à 4.

Travailler avec des chaînes de caractères

Dans de nombreuses applications, vous pouvez être amené à traiter des valeurs numériques sous forme de chaînes de caractères. L'analyse de la chaîne en double ou en décimal, l'arrondi et la reconversion peuvent être effectués en C#.

Parsing et arrondi

Voici un exemple d'arrondi d'une chaîne de caractères contenant un nombre décimal :

string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
string originalString = "4.5678";
double parsedValue = double.Parse(originalString);
double rounded = Math.Round(parsedValue, 2); // Rounds to two decimal places
string roundedString = rounded.ToString();
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}");
Dim originalString As String = "4.5678"
Dim parsedValue As Double = Double.Parse(originalString)
Dim rounded As Double = Math.Round(parsedValue, 2) ' Rounds to two decimal places
Dim roundedString As String = rounded.ToString()
Console.WriteLine($"Original: {originalString}, Rounded: {roundedString}")
VB   C#

Original : 4.5678, arrondi : 4.57

L'arrondi dans les applications financières

Lorsque l'on travaille avec des applications financières, la précision est essentielle. Les erreurs d'arrondi peuvent entraîner des problèmes importants. Dans ce cas, le type décimal est préféré en raison de sa plus grande précision par rapport au type double.

Exemple d'arrondi de la monnaie

L'exemple suivant illustre l'arrondi d'une valeur décimale représentant une devise :

decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
decimal originalValue = 1234.5678m;
decimal roundedValue = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero);
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}");
Dim originalValue As Decimal = 1234.5678D
Dim roundedValue As Decimal = Math.Round(originalValue, 2, MidpointRounding.AwayFromZero)
Console.WriteLine($"Original: {originalValue:C}, Rounded: {roundedValue:C}")
VB   C#

Le code ci-dessus arrondit la valeur à deux décimales, conformément à la plupart des normes monétaires.

Débogage et dépannage des erreurs d'arrondi

Il peut arriver que les opérations d'arrondi ne donnent pas les résultats escomptés. Ces écarts peuvent être dus à des problèmes tels que la précision de la virgule flottante avec des valeurs doubles.

Les pièges les plus fréquents

  • Précision double : Le type double ne représente pas toujours exactement les nombres décimaux, ce qui entraîne des résultats d'arrondi inattendus. L'utilisation du type décimal permet d'atténuer ce problème.
  • Mode d'arrondi du point médian incorrect : Veillez à utiliser le mode MidpointRounding adapté à vos besoins spécifiques. Une mauvaise utilisation de ces modes peut entraîner des erreurs d'arrondi.

Comment déboguer

Utilisez des outils tels que l'enregistrement et les points d'arrêt pour tracer la valeur avant et après l'arrondi. L'inspection de la valeur originale et des paramètres transmis à la méthode d'arrondi permet généralement de détecter les incohérences.

Iron Suite

Après avoir maîtrisé les bases de l'arrondi en C#, vous vous demandez peut-être comment faire passer vos applications au niveau supérieur, notamment lorsqu'elles traitent des formats de données complexes. LesIron Suite peut être votre sauveur. Cette suite comprend des outils puissants comme IronPDF, IronXL, IronOCR et IronBarcode. Voyons plus en détail comment ces outils peuvent s'intégrer à vos opérations d'arrondi et enrichir vos applications.

IronPDF

C# Round(Comment ça marche pour les développeurs) Figure 1

IronPDF est une bibliothèque robuste en C# conçue pourGénération de PDF à partir de HTMLles services d'information et d'éducation, les services d'édition et les services de gestion. Imaginez un scénario dans lequel vous devez générer un rapport au format PDF après avoir effectué des opérations d'arrondi. IronPDF peut convertir sans effort votre code C# en PDF de haute qualité.

IronXL

C# Round(Comment ça marche pour les développeurs) Figure 2

IronXL fournit des fonctionnalités pour travailler avec des fichiers Excel, permettant aux développeurs C# de lire, écrire et manipuler des feuilles de calcul Excel de manière transparente. Avec IronXL, vous pouvez récupérer des données décimales ou doubles à partir de feuilles Excel, effectuer des opérations d'arrondi en C#.

IronOCR

C# Round(Comment ça marche pour les développeurs) Figure 3

IronOCR est un système avancé de reconnaissance optique de caractères(OCR) pour C# qui permet de reconnaître et d'extraire du texte à partir d'images et de PDF. Supposons que vous ayez numérisé des documents ou des images contenant des données numériques. Avec IronOCR, vous pouvez extraire ces données, les traiter ou les arrondir en C#.

IronBarcode

C# Round(Comment ça marche pour les développeurs) Figure 4

IronBarcode est un outil puissant pour générer, lire et classer les codes-barres et les codes QR dans .NET. Dans les contextes où des données arrondies doivent être encodées dans des codes-barres(par exemple, la tarification des produits dans une application de vente au détail)ironBarcode peut s'avérer très utile.

Conclusion

L'arrondi en C# est un sujet aux multiples facettes qui trouve des applications dans divers domaines. Comprendre les méthodes intégrées telles que Math.Round, Math.Floor et Math.Ceiling, et savoir quand utiliser le type de données approprié(double ou décimal) vous permettra de traiter efficacement les données numériques.

L'utilisation de l'arrondi en C# permet de travailler plus facilement avec les nombres. Mais qu'en est-il si vous voulez en faire encore plus avec ces chiffres ? C'est là que leIron Suite arrive. Il s'agit d'un ensemble d'outils qui peuvent vous aider à travailler avec des PDF, des fichiers Excel, du texte dans des images et des codes-barres.

Voici la partie la plus intéressante : Vous pouvez essayer ces outils gratuitement avec unlicence d'essai pour voir si elles vous plaisent. Si vous décidez d'en acheter une, chaque licence coûte $749. Mais si vous souhaitez les acheter tous, vous pouvez obtenir l'ensemble pour seulement deux outils. C'est comme si vous receviez quatre outils mais que vous n'en payiez que deux! Consultez le site de l'Iron Suitepage de licence pour plus d'informations.

< PRÉCÉDENT
C# Dictionnaire Trygetvalue (Comment ça marche pour les développeurs)
SUIVANT >
Opérateurs logiques C# (Comment ça marche pour les développeurs)