jabbong   4년 전

예시를 입력해도 잘 나오고, 제가 직접 테스트 케이스를 만들어 입력해보았는데도 잘 나왔습니다.

제가 생각하는 제 코드 오류는 만약에 답이 35라면 '35'가 출력되어야 하는데 '35.000'이 나온다는 것입니다.

제 코드에서 뭐가 문제인지 알려주시면 감사하겠습니다.

또, 만약 위에서 언급한 제가 생각하는 오류가 맞다면 '35.000'에 소수점 아래에 0을 어떻게 없애는 지에 관해도 알려주시면 감사하겠습니다.

djm03178   4년 전

35.000이 맞습니다. 셋째 자리까지 출력하라고 했기 때문입니다.

이 코드가 틀리는 이유는 부정확함의 끝판왕인 float를 썼기 때문입니다.

jabbong   4년 전

그럼 어떤 자료형을 써야할까요?

다른 실수 자료형인 'double'형을 썼는데 double 형으로 바꾸면 제대로 출력이 되지 않습니다.

어떻게 해야할까요? ㅠㅠ

jabbong   4년 전

자료형을 'float'형에서 'double'형으로 바꾸고 출력형식에 'l'을 추가하니까 맞았다고 뜨네요...

감사합니다..

혹시 'float'형은 왜 문제가 되는지 알려주실 수 있으신가요?

'float'형은 안되고 'double'형은 되는 이유요...

djm03178   4년 전

말씀드렸던 대로, float가 그만큼 부정확하기 때문입니다. float는 4바이트밖에 안 되는데도 꽤나 넓은 범위를 표현할 수 있죠? 그만큼 정확도에서 손실이 발생합니다. double은 8바이트이기 때문에 보다 높은 정확도를 가집니다.

jabbong   4년 전

네, 감사합니다...

djm03178님 조언대로 앞으로는 float형 말고 double형을 쓰도록 하겠습니다.

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