missing   3년 전

진짜 예제 출력 할거 생각해서 몇 개 해봐도 잘 나오는데 왜 틀린건지 도저히 모르겠습니다...

문제가 뭔지 좀 부탁드려보아도 될까요 ㅠㅠ

dldyddlwl   3년 전

int ans = new_goal/temp;

double new_ans = new_goal/temp;

if(new_ans > ans)

의도하신 바는 만약 new_goal / temp가 나누어 떨어졌다면, new_ans와 ans가 같을 것이며, 나누어떨어지지 않았다면, new_ans가 클 것이라는 논리로 보입니다.

일반적인 경우에는 맞을 것입니다. ex) 1/3 (int형) = 0, 1/3(double) = 0.33333 이니, double 이 더 크다는 것을 통해 나누어 떨어지는 지의 여부를 알 수 있겠죠!

그런데, 만약, double의 정밀도를 벗어나는 경우는 어떨까요?(15개의 자릿수) 예를 들어봅시다.

ex)  new_goal / temp 의 값이 150000000.0000001 라면, double은 소수점 마지막 1을 잘라버릴 것입니다. 그렇게 되면, 나누어떨어지지 않음에도 int형과 같은 값을 가지게 되는것이죠.

missing   3년 전

먼저 읽어주셔서 진심으로 감사합니다.

말씀해주신 부분 잘 고려하여 다른 논리로 만들도록 하겠습니다!


알려주셔서 감사합니다~!

댓글을 작성하려면 로그인해야 합니다.