chlghtjd00   2년 전

흠.. 왜 틀린건지를 모르겠어요

어딜 고쳐야 할까요

djm03178   2년 전

float는 표현 범위가 너무 작기 때문에 a/(c-b)가 될 수 있는 값 범위 전체를 정확하게 표현하지 못합니다. 또한 의도와 달리 a/(c-b)는 정수형을 정수형으로 나누는 것이기 때문에 이미 소수점 아래를 버린 몫을 정확하게 구하는 문장이므로, 굳이 실수형에 담았다가 int로 변환할 필요 없이 그대로 정수형에 담고 1만 더해주면 됩니다.

chlghtjd00   2년 전

음,,,, float의 표현 범위가 너무 작다는게 어떤 말인지 잘 이해가 되지 않구요,,(일단 int보단 float가 더 넓잖아요?!)

그리고 말씀해주신 거 반영해서 x를 int로 수정만 했는데 정답으로 처리되는데,, 이게 왜 이러는 건가요??

djm03178   2년 전

제가 표현을 좀 잘못했네요. 범위가 아니라 정확도가 int에 비해 낮습니다. int나 float나 채점 환경에서는 모두 4바이트인데, float가 더 넓은 범위를 표현하기 위해 정확도를 희생했기 때문에 int가 표현할 수 있는 모든 수들을 다 정확하게 표현하지 못하고 수가 커지면 오차가 발생합니다. float의 정확도는 약 6자리이기 때문에 백만 이상의 수를 표현해야 할 경우 오차가 발생할 수 있습니다.

djm03178   2년 전

자세한 건 제가 이전에 쓴 글 https://www.secmem.org/blog/20... 을 참고하시면 좋을 것 같습니다.

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