Comment arrondir un nombre entier pour la proximité cent?
Je ne sais pas il ma nomenclature est correct! De toute façon, ce sont les entier je n'ai, par exemple :
76
121
9660
Et j'aimerais autour d'eux jusqu'à la fin centaines de, comme ils doivent devenir :
100
100
9700
Comment puis-je le faire plus rapide en C#? Je pense à un algorithme, mais peut-être il y a quelques utilitaires sur C#?
- Il a essayé de StackOverflow!
- hahaha!!! Ouais, j'ai essayé avec près @L. B solution (il supprimer le post, je ne sais pas :
var newi = (int)Math.Round(oldi / 100d)*100;
). Je pense que c'est le meilleur moyen... - Qu'en 50? 0 ou 100?
Vous devez vous connecter pour publier un commentaire.
Essayer le
Math.Round
méthode. Voici comment:0
bien. Peut-être que vous pourriez utiliser le milieu de l'arrondi de surcharge mieuxMath.Round
tronque la valeurMath.Round(50d / 100d, 0)
sera de 0. Certaines personnes pourrait s'attendre à 100.Math.Round(decimal d, int decimals, MidpointRounding mode)
surcharge:Math.Round(50d / 100d, 0, MidpointRounding.AwayFromZero);
MidpointRounding
enum (stackoverflow.com/a/36421665/964821)J'ai écrit une simple extension de la méthode de généraliser ce type d'arrondi il y a un moment:
De tirer profit de la division entière pour trouver la plus proche de l'arrondissement.
Exemple d'utilisation:
Et dans votre exemple:
51.Round(-10)
?UseYourCommonSense
exception.this int i
pour le premier paramètre. C'est un nouveau truc que j'ai appris de cette réponse.Extension Method
voir msdn.microsoft.com/en-AU/library/bb383977.aspx ils sont tout à fait à portée de main.Essayer cette expression:
Juste quelques plus @krizzzn's accepté de répondre...
Ne remarque que le suivant sera de retour 0:
Envisager d'utiliser la commande suivante et rendre retour à 100 au lieu de cela:
En fonction de ce que vous êtes en train de faire, à l'aide de décimales peut être un meilleur choix (à noter la m):
Je sais que c'est un vieux thread. J'ai écrit une nouvelle méthode. J'espère que ce sera utile pour certains une.
Exemple:
Salut je vous écris cette extension de cette fonction retourne la prochaine cents pour chaque numéro, vous passez
value % 100 == 0
, par exemple, lorsque cette méthode est appelée avec i = 200, puis il retourne à 300.Remarque: je n'ai pas testé à fond.
Si vous ne voulez arrondir des nombres entiers (comme l'OP fait), alors vous pouvez recourir à cette solution:
Si vous souhaitez effectuer virgule flottante (ou virgule) arrondi, alors recourir à des réponses de @krizzzn et @Jim Aho.