sourcecode

임의의 번호의 Java 반올림

copyscript 2022. 7. 28. 23:41
반응형

임의의 번호의 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

반응형