Je veux faire cela en utilisant le Math.Round
fonction
Réponses
Trop de publicités?Voici un exemple :
decimal a = 1.994444M;
Math.Round(a, 2); //returns 1.99
decimal b = 1.995555M;
Math.Round(b, 2); //returns 2.00
Vous pouvez également vous pencher sur les arrondis des banquiers / les arrondis au pair avec la surcharge suivante :
Math.Round(a, 2, MidpointRounding.ToEven);
Il y a plus d'informations à ce sujet ici .
Si vous souhaitez une chaîne
> (1.7289).ToString("#.##")
"1.73"
Ou une décimale
> Math.Round((Decimal)x, 2)
1.73m
Mais attention ! L'arrondi n'est pas distributif, c'est-à-dire qu'il n'est pas possible d'arrondir. round(x*y) != round(x) * round(y)
. Ne faites donc pas d'arrondis avant la toute fin d'un calcul, sinon vous perdrez en précision.
Wikipedia a une belle page sur les arrondis en général.
Tous les langages .NET (gérés) peuvent utiliser l'un des mécanismes d'arrondi du CLR (Common Language Run Time). Par exemple, le Math.Round() (comme mentionné ci-dessus) permet au développeur de spécifier le type d'arrondi (arrondi au pair ou éloigné de zéro). La méthode Convert.ToInt32() et ses variantes utilisent les méthodes suivantes round-to-even . Le site Plafond() et Floor() sont liées.
Vous pouvez arrondir avec formatage numérique personnalisé également.
Notez que Decimal.Round() utilise une méthode différente de Math.Round() ;
Voici un position utile t sur l'algorithme d'arrondi du banquier. Voir l'un des dessins humoristiques de Raymond postes ici à propos de l'arrondi...
- Réponses précédentes
- Plus de réponses