Comment arrondissez-vous un nombre à deux décimales en C #?

Je veux faire cela en utilisant la fonction Math.Round

    Voici quelques exemples:

     decimal a = 1.994444M; Math.Round(a, 2); //returns 1.99 decimal b = 1.995555M; Math.Round(b, 2); //returns 2.00 

    Vous pourriez aussi vouloir regarder les banquiers arrondir / aller-retour avec la surcharge suivante:

     Math.Round(a, 2, MidpointRounding.ToEven); 

    Il y a plus d’informations à ce sujet ici .

    Essaye ça:

     twoDec = Math.Round(val, 2) 

    Personnellement, je ne arrondis jamais rien. Gardez-le aussi résolu que possible, car l’arrondi est un peu un hareng rouge dans CS de toute façon. Mais vous voulez formater les données pour vos utilisateurs, et pour cela, je trouve que ssortingng.Format("{0:0.00}", number) est une bonne approche.

    Si vous souhaitez une chaîne

     > (1.7289).ToSsortingng("#.##") "1.73" 

    Ou une décimale

     > Math.Round((Decimal)x, 2) 1.73m 

    Mais rappelles-toi! L’arrondi n’est pas dissortingbutif, c.-à-d. round(x*y) != round(x) * round(y) . Donc, ne faites pas d’arrondi avant la fin d’un calcul, sinon vous perdrez de la précision.

    Wikipedia a une belle page sur l’arrondissement 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, la méthode Math.Round () (comme mentionné ci-dessus) permet au développeur de spécifier le type d’arrondi (Round-to-Même ou Away-from-Zero). La méthode Convert.ToInt32 () et ses variantes utilisent la méthode d’ aller-retour . Les méthodes Ceiling () et Floor () sont liées.

    Vous pouvez également arrondir avec un formatage numérique personnalisé .

    Notez que Decimal.Round () utilise une méthode différente de Math.Round ();

    Voici une position utile sur l’algorithme d’arrondi du banquier. Voyez l’un des messages humoristiques de Raymond sur l’arrondissement …

    // convertit jusqu’à deux décimales

     Ssortingng.Format("{0:0.00}", 140.6767554); // "140.67" Ssortingng.Format("{0:0.00}", 140.1); // "140.10" Ssortingng.Format("{0:0.00}", 140); // "140.00" Double d = 140.6767554; Double dc = Math.Round((Double)d, 2); // 140.67 decimal d = 140.6767554M; decimal dc = Math.Round(d, 2); // 140.67 

    =========

     // just two decimal places Ssortingng.Format("{0:0.##}", 123.4567); // "123.46" Ssortingng.Format("{0:0.##}", 123.4); // "123.4" Ssortingng.Format("{0:0.##}", 123.0); // "123" 

    peut également combiner “0” avec “#”.

     Ssortingng.Format("{0:0.0#}", 123.4567) // "123.46" Ssortingng.Format("{0:0.0#}", 123.4) // "123.4" Ssortingng.Format("{0:0.0#}", 123.0) // "123.0" 

    Je sais que c’est une vieille question mais s’il vous plaît noter pour les différences suivantes entre Math round et le format Ssortingng tour :

     decimal d1 = (decimal)1.125; Math.Round(d1, 2).Dump(); // returns 1.12 d1.ToSsortingng("#.##").Dump(); // returns "1.13" decimal d2 = (decimal)1.1251; Math.Round(d2, 2).Dump(); // returns 1.13 d2.ToSsortingng("#.##").Dump(); // returns "1.13" 

    Ceci est pour arrondir à 2 décimales en C #:

     label8.Text = valor_cuota .ToSsortingng("N2") ; 

    Dans VB.NET:

      Imports System.Math round(label8.text,2) 

    Une chose que vous voudrez peut-être vérifier est le mécanisme d’arrondissement de Math.Round:

    http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx

    En dehors de cela, je recommande l’approche Math.Round (inputNumer, numberOfPlaces) par rapport à * 100/100 car elle est plus propre.

    Vous devriez pouvoir spécifier le nombre de chiffres que vous voulez arrondir en utilisant Math.Round (YourNumber, 2)

    Vous pouvez en lire plus ici .

    chaîne a = “10.65678”;

    decimal d = Math.Round (Convert.ToDouble (a.ToSsortingng ()), 2)

      public double RoundDown(double number, int decimalPlaces) { return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces); } 

    Math.Floor (123456.646 * 100) / 100 renverrait 123456.64