2010-12-27 3 views
110

간단한 질문과 관련된 대답을 찾을 수 없습니다. int에 숫자를 반올림하는 방법은 무엇입니까? 수는 0.2 때마다Java Round Up 모든 번호

예를 들어

, 0.7, 0.2222, 0.4324, 0.99999 나는 지금까지 내가

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

그것은하지 않는 것이 결과가 1

되고 싶은 것 그래도 일을해야 해.

+0

왜 샘플 코드에서 100으로 나눕니 까? –

+12

'a'는 정수형을 가지고있을 것입니다. –

+0

입력 내용과 예상 출력을 알려주십시오. –

답변

216

Math.ceil()은 올바른 기능입니다. 나는 aint이고 a/100이 정수 연산을 수행한다고 추측합니다. 대신 Math.ceil(a/100.0)을 시도하십시오.

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)); 

출력 : 난 당신이 여기 내 가정을 100로 나누어 있지만, 왜 모르는

1 
1.0 
1.42 
2.0 
2 

http://ideone.com/yhT0l

+1

아, 자리에 ... 감사합니다 – Stevanicus

+1

이 경우에만 "a"가 double 일 경우 –

+0

^^ "a"는 두 번이거나 두 번 캐스팅해야합니다. – Codeversed

12

를 참조 int a;

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

또는

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

이것은 완벽한 작업을 수행하는 것으로 보입니다. 매번 일했습니다.

1

a를 double로 가정 할 때 소수점이없는 반올림 된 숫자가 필요합니다. Math.round() 함수를 사용하십시오.
이것은 내 해결책으로 사용됩니다.

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

Output : 
a:1 
+0

이것은 대답을 반올림하기 위해 여기에 대답을하므로 a = 0.2이면 결과는 0이됩니다. – Mohamed23gharbi