반응형
안녕하세요. 개발자 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 블로그에 방문해주셔서 감사합니다.
[ 참조 ]
반응형
'개발 > Java' 카테고리의 다른 글
[Java] 함수형 인터페이스(Functional Interface)란? (0) | 2022.04.09 |
---|---|
[Java] POI로 데이터 엑셀 다운받기 (0) | 2022.03.22 |
[Java] Json Array 정렬 (0) | 2022.03.06 |
[Java] SMTP와 Mail 발송 (0) | 2022.03.06 |
[Java] 자료형간의 형변환(문자형,정수형,실수형) (0) | 2022.03.03 |