자바는 모든 수를 올림

간단한 질문과 관련하여 내가 찾고있는 답변을 찾을 수없는 것 같습니다 : 가장 가까운 숫자를 int어떻게 반올림 합니까?

예를 들어 숫자가 0.2, 0.7, 0.2222, 0.4324, 0.99999 일 때마다 결과가 1이되기를 원합니다.

지금까지

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

그래도 작업을 수행하지 않는 것 같습니다.



답변

Math.ceil()호출 할 올바른 함수입니다. 내가 추측하고있어이 a이다 int만들 것이다, 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));

출력 :

1
1.0
1.42
2.0
2

http://ideone.com/yhT0l 참조


답변

왜 당신이 100으로 나누는 지 모르겠지만 여기에 내 가정이 있습니다. int a;

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

또는

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


답변

int RoundedUp = (int) Math.ceil(RandomReal);

이것은 완벽한 일을하는 것처럼 보였다. 매번 일했다.


답변

10 년 후에도 그 문제는 여전히 저를 사로 잡았습니다.

그래서 이것은 나만큼 늦었 던 사람들의 대답입니다.

이 작동하지 않습니다

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

결과 a / 100는 정수로 판명되고 반올림되므로 Math.ceil은 그것에 대해 아무것도 할 수 없습니다.

이것으로 반올림 조작을 피해야합니다

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

이제 작동합니다.


답변

가장 쉬운 방법은 다음과 같습니다. float 또는 double을 받고 가장 가까운 라운드로 변환하고 System.out.println((int)Math.ceil(yourfloat));
완벽하게 작동하도록하십시오.


답변

a를 double로 가정하면 소수점 이하 자릿수가없는 둥근 숫자가 필요합니다. Math.round () 함수를 사용하십시오.
이것은 나의 해결책으로 간다.

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

Output :
a:1


답변