44 votos

Cómo redondear al número entero más cercano en C#

¿Cómo puedo redondear los valores así?

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

Math.Ceiling() no me ayuda. ¿Alguna idea?

91voto

Only Bolivian Here Puntos 8199

Ver el documentación oficial para más. Por ejemplo:

Básicamente le das a la Math.Round método tres parámetros.

  1. El valor que quieres redondear.
  2. El número de decimales que desea mantener después del valor.
  3. Un parámetro opcional que puede invocar para utilizar el redondeo AwayFromZero. Sin él, '1,5' se redondea a '1' en lugar de a '2'.

Código de ejemplo:

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

Necesitas MidpointRounding.AwayFromZero es que quieres que un valor de 0,5 se redondee hacia arriba. Desafortunadamente, este no es el comportamiento por defecto de Math.Round() .

40voto

devrooms Puntos 1865
Math.Ceiling

siempre redondea hacia arriba (hacia el techo)

Math.Floor

siempre redondea hacia abajo (hacia el suelo)

lo que se busca es simplemente

Math.Round

que redondea según este puesto

5voto

dasblinkenlight Puntos 264350

Necesitas Math.Round no Math.Ceiling . Ceiling siempre "redondea" hacia arriba, mientras que Round redondea hacia arriba o hacia abajo dependiendo del valor después del punto decimal.

3voto

Marlon Puntos 11528

Puedes usar Math.Round como otros han sugerido (recomendado), o puedes añadir 0.5 y convertirlo en un int (que eliminará la parte decimal).

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

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

2voto

user496607 Puntos 163

Tienes la función Math.Round que hace exactamente lo que quieres.

Math.Round(1.1) results with 1
Math.Round(1.8) will result with 2.... and so one.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X