Je veux faire en utilisant la fonction Math.Round
Comment arrondis-tu un nombre à deux décimales en C#?
Répondre
Essayez ceci:
twoDec = Math.Round(val, 2)
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 regarder les banquiers d'arrondi/tour-to même avec la surcharge suivante:
Math.Round(a, 2, MidpointRounding.ToEven);
Il y a plus d'informations à ce sujet here.
Vous devriez être en mesure de préciser le nombre de chiffres que vous souhaitez arrondir à l'aide Math.Round (YourNumber, 2)
Vous pouvez en lire plus here.
Une chose que vous pouvez vérifier le mécanisme Arrondi du Math.Round:
http://msdn.microsoft.com/en-us/library/system.midpointrounding.aspx
Autre que cela, je recommande l'approche Math.Round (inputNumer, numberOfPlaces) sur le * 100/100 parce que c'est plus propre.
Wikipedia has a nice page en arrondissant en général.
Toutes les langues .NET (gérées) peuvent utiliser n'importe lequel des mécanismes d'arrondi de 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-pair ou Away-from-zero). La méthode Convert.ToInt32() et ses variantes utilisent round-to-even. Les méthodes Ceiling() et Floor() sont liées. Vous pouvez également arrondir avec custom numeric formatting. Remarque: Decimal.Round() utilise une méthode différente de Math.Round();
Voici un useful pos t sur l'algorithme d'arrondi du banquier. Voir un de Raymond de posts here humoristique sur l'arrondissement ...
Ceci est pour arrondir à 2 décimales en C#:
label8.Text = valor_cuota .ToString("N2") ;
En VB.NET:
Imports System.Math
round(label8.text,2)
Personnellement, je ne rondes n'importe quoi. Gardez-le aussi résolument que possible, puisque arrondir est un peu un hareng rouge dans CS de toute façon. Mais vous voulez formater les données pour vos utilisateurs, et à cette fin, je trouve que string.Format("{0:0.00}", number)
est une bonne approche.
Cela fonctionne mieux à des fins d'affichage, en particulier pour l'argent, comme £ 5,4 (avec Math.round) ne semble pas aussi bien que £ 5,40 (de cette façon). –
J'ai essayé avant string.Format ("0: 0.00", nombre), mais cela n'a pas fonctionné. Ces crochets sont très importants, donc: string.Format ("{0: 0.00}", number) fonctionne. – FrenkyB
@FrenkyB Quand vous dites «crochets», j'espère que vous voulez dire des accolades. – Mathemats
Si vous souhaitez une chaîne
> (1.7289).ToString("#.##")
"1.73"
Ou un nombre décimal
> Math.Round((Decimal)x, 2)
1.73m
Mais rappelez-vous! L'arrondissement n'est pas distributif, c'est-à-dire. round(x*y) != round(x) * round(y)
. Donc, ne faites pas d'arrondis jusqu'à la fin d'un calcul, sinon vous perdrez de la précision.
chaîne a = "10,65678";
décimal d = Math.Round (Convert.ToDouble (a.ToString()), 2)
// 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 également 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"
String.Format ("{0: 0,00}", 140,6767554); ! = "140.67" Le rendu est réellement "140.68" - arrondi – AndyT
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 reviendriez 123456,64
Je sais que une vieille question, mais s'il vous plaît noter les différences suivantes entre Math rondes et Format de la chaîne ronde:
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"
- 1. Écrire un nombre avec deux décimales SQL server
- 2. Comment formater un nombre décimal en un nombre de décimales contrôlé par programme dans C#?
- 3. Limite double à deux décimales
- 4. Comment convertir un nombre en complément à deux dans verilog?
- 5. Mise en forme d'un flotteur à ### ## (deux décimales)
- 6. Arrondir les valeurs décimales en C#
- 7. Pour afficher le nombre avec 2 décimales
- 8. Comment générer un nombre aléatoire en C#?
- 9. Haskell: Force flotte pour avoir deux décimales
- 10. Comment arrondir une valeur double à un nombre sélectionné de décimales dans .NET?
- 11. Décimales de précision arbitraires en C#?
- 12. Mettre en forme un nombre avec des virgules, mais conserver des décimales
- 13. C# - Reliure TextBox à un nombre entier
- 14. Comment formater un nombre stocké dans une chaîne?
- 15. Comment convertir de grands nombres en décimales?
- 16. Comment limiter le nombre de décimales affichées dans une échelle ZedGraph Y?
- 17. Comment convertir un nombre en octet?
- 18. Comment arrondir un nombre à 50 dans obj c/cacao
- 19. En SQL comment puis-je convertir un type de données monétaire en nombre décimal?
- 20. Ne laisser que deux décimales après le point
- 21. Comment ajouter un nombre à un Sqlcommand.Parameters?
- 22. Comment joindre deux chemins en C#?
- 23. Nombre à chaîne dans un champ de formule
- 24. Comment arrondir un nombre décimal pour la sortie?
- 25. Comment arrondir un nombre en PHP?
- 26. Comment arrondir un nombre décimal à une fraction spécifique en C#?
- 27. Comparer deux XmlNodes en C#
- 28. Fonction diviser la chaîne en décimales?
- 29. Restreindre les utilisateurs à entrer des nombres valides seulement jusqu'à 2 décimales C/C++
- 30. Comment traiter deux types similaires en un?
Vous devriez rify que MidPointRounding.ToEven est la valeur par défaut. Si vous vouliez AwayFromZero vous devriez utiliser la surcharge –
Je pense que MidPointRounding.ToEven est la valeur par défaut ... – Pedro77
Je pense que cela devrait être: 'MidpointRounding' pas' MidPointRounding' au cas où quelqu'un se demanderait pourquoi il ne compile pas. –