임의의 번호의 Java 반올림
간단한 질문에 대해 원하는 답을 찾을 수 없는 것 같습니다. 어떻게 하면 가장 가까운 숫자를 반올림할 수 있습니까?int
?
예를 들어 숫자가 0.2, 0.7, 0.222, 0.4324, 0.9999일 때마다 결과가 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);
이제 그것은 동작한다.
가장 쉬운 방법이 있다.여러분들은 가장 가까운 일제 검거하기만 하지 않기 때문에 변환할 찌, 더블을 받을 것이다. System.out.println((int)Math.ceil(yourfloat));
그것이 완벽하게 작동할 것
그냥 다른 선택이다.수학의 기본을 사용하세요:
Math.ceil(p / K)
동일하다((p-1) // K) + 1
가정은 같으며 우리는 소수 자리가 있는 앞쪽이 둥근 번호가 필요할 두배가 되었다.사용 Math.round()기능이다.
이것은 나의 해결책으로 간다.
double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );
Output :
a:1
언급URL : https://stackoverflow.com/questions/4540684/java-round-up-any-number
'sourcecode' 카테고리의 다른 글
상태가 처음 변경된 후 계산된 값이 반응을 멈춥니다. (0) | 2022.07.28 |
---|---|
VueJ: 감시자 내부에서 구성 요소 속성을 업데이트할 수 없습니다. (0) | 2022.07.28 |
Java에서 Array List를 초기화하려면 어떻게 해야 하나요? (0) | 2022.07.28 |
JVM과 HotSpot의 차이점 (0) | 2022.07.28 |
권장되는 VueJS 애플리케이션 API 및 Vuex 설계 패턴이 있습니까? (0) | 2022.07.28 |