간단한 질문과 관련하여 내가 찾고있는 답변을 찾을 수없는 것 같습니다 : 가장 가까운 숫자를 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
답변
왜 당신이 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