503 votes

Comment arrondir un nombre à deux décimales en C# ?

Je veux faire cela en utilisant le Math.Round fonction

823voto

Eoin Campbell Points 22861

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 .

126voto

John Boker Points 36308

Essayez ça :

twoDec = Math.Round(val, 2)

48voto

Colonel Panic Points 18390

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.

36voto

Gleno Points 4580

Personnellement, je n'arrondis jamais rien. Il faut rester aussi résolu que possible, car les arrondis sont un peu un leurre en CS de toute façon. Mais vous souhaitez formater les données pour vos utilisateurs, et à cette fin, je trouve que string.Format("{0:0.00}", number) est une bonne approche.

16voto

Foredecker Points 5784

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...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X