Java 소수점 다루기

김성수·2023년 10월 5일
0

Java

목록 보기
16/18

printf, Math.round, Math.floor, Math.ceil

연산에서 특이 케이스

정수형 / 정수형은 소수점이 버려진다.

따라서 하나의 수라도 실수형으로 캐스팅해줘야 올바른 실수 값이 나온다고 한다.

프로그래머스 기능 개발 문제를 푸는데 테스트케이스 11번이 계속 틀리길래 반례 찾다가 100 / 34가 2.9xxx였고 이를 나눴을 때 2라는 값이 나와서 문제가 발생했었다.

실질적으로 3 값을 반환해줘야 올바른 정답이 도출되기 때문에 반올림이 필요했다.

그래서 int calDivNex = Math.round((100-progresses[i]) / speeds[i]);
위와 같이 Math.round()를 사용해봤는데 안돼서 100 / 34 값을 직접적으로 출력해보니 2.002(?)라는 값이 출력되었다.

이유를 모르겠어서 물어봤더니 정수형 끼리 연산은 자동으로 소수점을 버린다고 한다.

profile
깊이 있는 소프트웨어 개발자가 되고 싶습니다.

0개의 댓글