2012-02-19 28 views
9

Esencialmente, si el número generado es 2.3, entonces si restar .5, será de 1.8, pero la función de redondeo lo hará 2, que es lo que quiero O si la respuesta es 2.99999 y restar .5, la respuesta es 2.49999, que debería redondearse a 2, que es lo que quiero. Mi pregunta es si la respuesta es 2 y yo incluso restar 0.5, la respuesta es ahora 1.5, por lo que será aún redondear a 2.Redondeando al número entero más cercano .... estoy haciendo trampa o es esto más que adecuado

temp1_1= Math.round(temp2_2/(360/temp_value)-.5); 

esta es mi línea de código para esto.

+0

¿Qué pasó cuando lo intentó? –

Respuesta

17

Incluso más simple y más rápido potencial

double d = 2.99999999; 
long l = (long) d; // truncate to a whole number. 

Este redondeará hacia 0. Math.floor() redondea hacia el infinito negativo. Math.round (x - 0.5) también se redondea hacia el infinito negativo.

+9

Creo que esto redondeará los números negativos * hasta *. –

+0

por lo que sé, no creo que alguna vez tenga un valor negativo. la forma en que lo tengo funcionando hasta ahora. fue una solución rápida que necesitaba. si surge algún problema en el futuro, haré un cambio. gracias a todos por la información –

33

Ya existe una función para hacer eso. Se llama floor:

double d = Math.floor(2.9999) //result: 2.0 
3

Todo el mundo siempre quiere usar funciones sofisticadas, pero se olvida del módulo humilde. Mi solución:

number = x-(x%1); 

resta el resto de la división por uno, para x = 2,999 voluntad = 2, 3.111 voluntad = 3 y así sucesivamente. Lo bueno de esto es que puedes redondear el múltiplo de cualquier cosa simplemente cambiando ese 1 a lo que quieras.

Cuestiones relacionadas