100 votes

Comment faire pour arrondir au nombre entier le plus proche en C#

Comment arrondir les valeurs comme ceci:

1.1 => 1
1.5 => 2
1.9 => 2

Math.Ceiling() n'est pas de m'aider. Des idées?

215voto

Only Bolivian Here Points 8199

Voir la documentation officielle pour plus d'. Par exemple:

Fondamentalement, vous donner l' Math.Round méthode de trois paramètres.

  1. La valeur que vous voulez arrondir.
  2. Le nombre de décimales que vous souhaitez conserver après la valeur.
  3. Un paramètre facultatif que vous pouvez invoquer pour utiliser AwayFromZero l'arrondissement. Sans elle, '1.5' tours '1' au lieu de '2'.

Exemple de code:

var roundedA = Math.Round(1.1, 0); // Output: 1
var roundedB = Math.Round(1.5, 0, MidpointRounding.AwayFromZero); // Output: 2
var roundedC = Math.Round(1.9, 0); // Output: 2

Vous avez besoin d' MidpointRounding.AwayFromZero c'est que vous voulez une .5 valeur à arrondir. Malheureusement, ce n'est pas le comportement par défaut de Math.Round().

72voto

devrooms Points 1865
Math.Ceiling

toujours des tours (vers le plafond)

Math.Floor

toujours arrondi vers le bas (vers le sol)

ce que vous êtes après est tout simplement

Math.Round

qui des tours de que par ce post

8voto

dasblinkenlight Points 264350

Vous avez besoin d' Math.Round, pas Math.Ceiling. Ceiling toujours des "séries", tandis que l' Round tours vers le haut ou vers le bas en fonction de la valeur après la virgule.

6voto

davogotland Points 1985

il y a de ce manuel, et assez mignon façon:

double d1 = 1.1;
double d2 = 1.5;
double d3 = 1.9;

int i1 = (int)(d1 + 0.5);
int i2 = (int)(d2 + 0.5);
int i3 = (int)(d3 + 0.5);

simplement ajouter 0,5 à n'importe quel nombre, et de la convertir en int (ou étage) et il sera mathématiquement arrondie :D

5voto

Marlon Points 11528

Vous pouvez utiliser les Mathématiques.Ronde comme d'autres l'ont suggéré (recommandé), ou vous pouvez ajouter 0,5 et cast en int (ce qui réduit la partie décimale).

double value = 1.1;
int roundedValue = (int)(value + 0.5); // equals 1

double value2 = 1.5;
int roundedValue2 = (int)(value2 + 0.5); // equals 2

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