hongju1988   7년 전

안녕하세요. 

제 PC에서 돌려보면 문제가 없는데, 결과값을 float 으로 출력하면 틀리다고 합니다. 

똑같은 코드에서 결과를 double로 캐스팅하면 맞는다고 하는데, 

혹시 float으로 출력하면 정답이 될 수 없는 이유가 있는 것일까요? 너무 궁금하네요.

isku   7년 전

float과 double의 차이는 표현할 수 있는 실수가 얼마나 정밀한가 입니다.

float보다 double은 더 많은 소숫점을 표현하여 계산할 수 있으며,

아무래도 더 정밀한 double을 사용하여 계산하는 것이 소수점 오차가 적겠죠.

수학에서 무한한 수의 계산이 당연하지만 컴퓨터는 무한이라는 개념을 표현하기 힘들고,

 유한한 숫자의 계산을 하기 때문에 오차가 발생하게 됩니다. 

즉 표현할 수 있는 소수점이 얼마나 많은지에 따라 오차범위가 줄어들고 더 정밀한 계산이 되겠죠.

pichulia   7년 전

뭐 ㆍ대충 이 위키페이지를 참고해보자면... (https://en.m.wikipedia.org/wik...)

유효숫자는 2^23정도까지만 표현이 가능하다고 합니다.


해보진 않았지한 9999정도를 넣으면 2 * 9999^2 값이 이상하게 나올거같네요



hongju1988   7년 전

이 사이트에서 문제를 풀 때는 되도록 double 형을 사용해야 겠네요....; 답변 감사합니다!

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