개발/Java

[Java] Java 나누기 사용시 주의사항

Jindory 2022. 3. 9. 19:21
반응형

안녕하세요. 개발자 Jindory입니다.

오늘은 Java에서 나누기 사용시 주의사항에 대해서 알아보고자 합니다.

 

만일 아래와 같은 연산을 실행했다면 어떤 결과가 나와야 할까요?

int total = (int) Math.ceil(157/32);

157/32 = 4.90625 이므로 5가 나와야 하지만 결과값은 4입니다.

그 이유는 두개의 정수를 서로 나누는 작업을 수행하면 항상 내림된 정수가 나옵니다.

따라서 (int) Math.ceil(...)을 사용할 경우 아래와 같은 방법 중 하나를 선택해서 사용해야합니다.


# 옵션1

int n = a / b + ((a % b == 0) ? 0 : 1); 

a,b 2개의 정수를 나누면 항상 내림된 정수값이 나오므로, a가 b로 딱 나누어 떨어지면 0을 더하고 딱 나누어 떨어지지 않는다면 1을 더하는 식으로 올림을 구현해야합니다.


# 옵션2

int n = (a + b - 1) / b;

a에 b를 더한값에 1을 감한 후 b로 나눈다면 원래 의도한 올림의 결과가 나타납니다.

예를들으 a가 10이고 b가 2일경우 (10+3-1)은 12이고 이것을 3로 나누면 4가 나옵니다.

 

혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.

오늘도 Jindory 블로그에 방문해주셔서 감사합니다.


[ 참조 ]

http://daplus.net/java-math-ceil%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-java-%EB%B0%98%EC%98%AC%EB%A6%BC-int/ 

반응형