2009-05-25 9 views

Respuesta

103

Si desea redondear a la más cercana int:

int rounded = (int)Math.Round(precise, 0); 

También puede utilizar:

int rounded = Convert.ToInt32(precise); 

Que usará Math.Round(x, 0); para redondear y lanzar para usted. Se ve más ordenado, pero es ligeramente menos claro IMO.


Si desea redondear hasta:

int roundedUp = (int)Math.Ceiling(precise); 
+9

Hay ambigüedad en la pregunta. El título sugiere que quiere redondear, mientras que él dice que quiere la int más cercana. Estas son 2 cosas diferentes. – mmcdole

+0

Él quería rodear. ¿No sería eso (int) Math.Ceiling (preciso)? – configurator

+0

@configurator, sí, eso es lo que estoy pensando. – mmcdole

9

De la parte superior de mi cabeza:

float fl = 0.678; 
int rounded_f = (int)(fl+0.5f); 
+0

¿Le importa explicar la última f (0.5f)? –

+4

Como un lanzamiento de flotante a un int se redondeará hacia abajo el +0.5 asegura que las vueltas al elenco más cercanas sean int. Sin embargo, esto solo funciona para flotadores positivos. –

1

Cómo puedo utilizar uno de estos entonces fundido a un Int?

Sí. No hay problema haciendo eso. Los decimales y los dobles pueden representar enteros exactamente, por lo que no habrá error de representación. (No obtendrá un caso, por ejemplo, donde Round devuelve 4.999 ... en lugar de 5.)

2

Lo más fácil es simplemente agregar 0.5f y luego convertirlo en un int.

0

Puede convertir a un int siempre que esté seguro de que está dentro del rango de un int (Int32.MinValue a Int32.MaxValue).

Cuestiones relacionadas