Comment arrondir un nombre à deux décimales en C#?
je veux le faire en utilisant la fonction Math.Round
151920920"
13 réponses
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 arrondissant / rond-à-même avec la surcharge suivante:
Math.Round(a, 2, MidpointRounding.ToEven);
Il ya plus d'informations sur elle ici .
personnellement, je n'arrondis jamais rien. Gardez-le aussi résolu que possible, puisque l'arrondissement est un peu un hareng rouge dans CS de toute façon. Mais vous voulez formater des données pour vos utilisateurs, et à cette fin, je trouve que string.Format("{0:0.00}", number)
est une bonne approche.
si vous voulez une corde
> (1.7289).ToString("#.##")
"1.73"
ou une décimale
> Math.Round((Decimal)x, 2)
1.73m
mais rappelez-vous! L'arrondi n'est pas distributive, c'est à dire. round(x*y) != round(x) * round(y)
. Donc, ne faites aucun arrondi jusqu'à la fin d'un calcul, sinon vous perdrez la précision.
Wikipedia a une belle page sur l'arrondissement en général.
toutes les langues .NET (gérées) peuvent utiliser n'importe lequel des mécanismes d'arrondi de common language run time (CLR). Par exemple, le Math.Round () (comme mentionné ci-dessus) la méthode permet au développeur de spécifier le type d'arrondi (rond-à-pair ou loin-de-zéro). converti.La méthode ToInt32() et ses variantes utilisent round-to-pair . Le Les méthodes Plafond () et plancher () sont liées.
vous pouvez arrondir avec format numérique personnalisé ainsi.
noter que décimal.Round () utilise une méthode différente des mathématiques.Round ();
voici un POS utile t sur l'algorithme d'arrondissement du banquier. Voir L'un des billets humoristiques de Raymond ici à propos de l'arrondissement...
// convertir jusqu'à deux décimales
String.Format("{0:0.00}", 140.6767554); // "140.67"
String.Format("{0:0.00}", 140.1); // "140.10"
String.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
String.Format("{0:0.##}", 123.4567); // "123.46"
String.Format("{0:0.##}", 123.4); // "123.4"
String.Format("{0:0.##}", 123.0); // "123"
peut aussi combiner" 0 "avec"#".
String.Format("{0:0.0#}", 123.4567) // "123.46"
String.Format("{0:0.0#}", 123.4) // "123.4"
String.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 String format round :
decimal d1 = (decimal)1.125;
Math.Round(d1, 2).Dump(); // returns 1.12
d1.ToString("#.##").Dump(); // returns "1.13"
decimal d2 = (decimal)1.1251;
Math.Round(d2, 2).Dump(); // returns 1.13
d2.ToString("#.##").Dump(); // returns "1.13"
pour arrondir à 2 décimales en C#:
label8.Text = valor_cuota .ToString("N2") ;
In VB.NET:
Imports System.Math
round(label8.text,2)
une chose que vous pourriez vouloir vérifier est le mécanisme D'arrondi de mathématiques.Rond:
http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx
à part ça, je recommande les maths.Rond (inputNumer, numberOfPlaces) approche sur le *100/100 un parce qu'il est plus propre.
Vous devriez être en mesure de préciser le nombre de chiffres que vous voulez arrondir à l'aide des Mathématiques.Round (YourNumber, 2)
vous pouvez lire la suite ici .
chaîne a = "10.65678";
décimal D = Math.Round(Convertir.ToDouble(A. ToString ()), 2)
public double RoundDown(double number, int decimalPlaces)
{
return Math.Floor(number * Math.Pow(10, decimalPlaces)) / Math.Pow(10, decimalPlaces);
}
"151910920 des Mathématiques".Plancher (123456.646 * 100) / 100 Retournerait 123456.64