L’arrondi des valeurs décimales est un aspect crucial de nombreuses applications C#, en particulier lorsqu’il s’agit de calculs financiers ou de présentation de données aux utilisateurs. Cet article explore les deux méthodes principales pour y parvenir : decimal.Round()
et Math.Round()
, en soulignant leurs différences et en vous guidant dans le choix de l’approche optimale pour vos besoins spécifiques.
Table des matières
- Arrondir les décimales avec
decimal.Round()
- Arrondir les décimales avec
Math.Round()
- Choisir la bonne méthode d’arrondi
Arrondir les décimales avec decimal.Round()
La méthode decimal.Round()
est spécifiquement conçue pour arrondir les valeurs décimales et offre un contrôle supérieur sur le processus d’arrondi. Une caractéristique clé est sa capacité à spécifier la stratégie MidpointRounding
, qui dicte comment les valeurs exactement à mi-chemin entre deux valeurs arrondies potentielles sont traitées. Deux stratégies courantes sont :
MidpointRounding.AwayFromZero
(Par défaut) : Arrondit la valeur médiane à partir de zéro. Par exemple, 2,5 est arrondi à 3, et -2,5 est arrondi à -3.MidpointRounding.ToEven
: Arrondit la valeur médiane au nombre pair le plus proche. Par exemple, 2,5 est arrondi à 2, et 3,5 est arrondi à 4. Cette approche est souvent préférée en analyse statistique pour minimiser les biais.
Voici comment utiliser decimal.Round()
:
using System;
public class DecimalRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
decimal value2 = 2.5m;
decimal value3 = -2.5m;
// À partir de zéro (par défaut)
Console.WriteLine($"{value1} arrondi : {decimal.Round(value1, 2)}");
Console.WriteLine($"{value2} arrondi : {decimal.Round(value2, 2)}");
Console.WriteLine($"{value3} arrondi : {decimal.Round(value3, 2)}");
// À pair
Console.WriteLine($"n{value1} arrondi (ToEven) : {decimal.Round(value1, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value2} arrondi (ToEven) : {decimal.Round(value2, 2, MidpointRounding.ToEven)}");
Console.WriteLine($"{value3} arrondi (ToEven) : {decimal.Round(value3, 2, MidpointRounding.ToEven)}");
}
}
Arrondir les décimales avec Math.Round()
La méthode Math.Round()
fournit une approche plus simple de l’arrondi, mais avec moins de contrôle. Elle utilise par défaut MidpointRounding.AwayFromZero
. Bien que vous puissiez spécifier MidpointRounding.ToEven
, decimal.Round()
est généralement recommandé pour sa clarté et sa précision, en particulier dans les applications financières.
using System;
public class MathRoundingExample
{
public static void Main(string[] args)
{
decimal value1 = 2.555m;
// À partir de zéro (par défaut)
Console.WriteLine($"{value1} arrondi : {Math.Round(value1, 2)}");
// À pair (spécifié explicitement)
Console.WriteLine($"n{value1} arrondi (ToEven) : {Math.Round(value1, 2, MidpointRounding.ToEven)}");
}
}
Choisir la bonne méthode d’arrondi
Pour les applications exigeant un arrondi précis, en particulier les calculs financiers, decimal.Round()
avec la spécification explicite de MidpointRounding
est le choix préféré. Pour les scénarios moins critiques où le comportement d’arrondi par défaut suffit, Math.Round()
offre une solution plus concise.