c++ float 형변환? 연산? 관련하여 질문 드립니다..

zzang3757의 이미지

아래와 같은 샘플 코드가 있습니다.. ( 헤더 생략..ㅋ )

int main()
{
int n = 100000000;

float f = n;
float f1 = f - 0.059;

cout << f1 << endl;

return 0;
}

저렇게 하면 cout으로 출력되는 값은 99999999.941 이 되야하는데,,

실제 출력되는 값은 1e+08 ( 100000000 ) 이 출력됩니다..

이렇게 출력되는 이유가 궁금합니다 살려주세요....

익명 사용자의 이미지

double이나 long double로 바꿔서 해보세요

zzang3757의 이미지

실제 코드에는 double 로 하였습니다.. 그런데,, 위 코드에서 결과값이 이상한게 궁금하네요 ㅜ

익명 사용자의 이미지

부동소수점의 정확도는 소숫점의 위치와는 상관없고 숫자의 길이와 관련이 있습니다. float면 7~8자리밖에 안되죠... double는 반면에 15자리 정도까진 정확도를 유지해 줍니다.