2010-12-27 16 views
110

Parece que no puedo encontrar la respuesta que estoy buscando con respecto a una pregunta simple: ¿cómo puedo redondear cualquier número al int más cercano?Java Round up Any Number

Por ejemplo, cuando el número es de 0,2, 0,7, 0,2222, 0,4324, 0,99999 me gustaría que el resultado sea 1.

Hasta ahora tengo

int b = (int) Math.ceil(a/100); 

No parece que estar haciendo el trabajo, sin embargo.

+0

¿Por qué está dividiendo entre 100 en su código de muestra? –

+12

Apuesto a que su 'a' tiene un tipo entero. –

+0

Cuéntanos cuáles son tus entradas y tus resultados esperados. –

Respuesta

216

Math.ceil() es la función correcta para llamar. Supongo que a es un int, que haría a/100 realizar aritmética de enteros. Pruebe Math.ceil(a/100.0) en su lugar.

int a = 142; 
System.out.println(a/100); 
System.out.println(Math.ceil(a/100)); 
System.out.println(a/100.0); 
System.out.println(Math.ceil(a/100.0)); 
System.out.println((int) Math.ceil(a/100.0)); 

Salidas:

1 
1.0 
1.42 
2.0 
2 

Ver http://ideone.com/yhT0l

+1

ah, mancha ... gracias – Stevanicus

+1

esto solo si "a" es doble –

+0

^^ "a" tiene que ser un doble o un doble. – Codeversed

12

No sé por qué estás dividiendo por 100, pero aquí mi suposición int a;

int b = (int) Math.ceil(((double)a)/100); 

o

int b = (int) Math.ceil(a/100.0); 
6
int RoundedUp = (int) Math.ceil(RandomReal); 

Parecía hacer el trabajo perfecto. Trabajado todo el tiempo

1

Suponiendo que a es el doble y necesitamos un número redondeado sin lugar decimal. Use la función Math.round().
Esto va como mi solución.

double a = 0.99999; 
int rounded_a = (int)Math.round(a); 
System.out.println("a:"+rounded_a); 

Output : 
a:1 
+0

Esta es una respuesta incorrecta, ya que se pregunta aquí para redondear UP si a = 0.2 el resultado será 0 – Mohamed23gharbi