• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

4.5 강의: int -> float type conversion은 4byte니까 문제 없나요?

23.04.29 12:03 작성 조회수 415

1

int iii = 1234;
float ff = iii;
cout << std::setprecision(12) << ff << endl;

위 예시를 보여주신 의도를 알고 싶습니다

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2023.04.29

안녕하세요, 답변 도우미 Soobak 입니다. 😀

자료형의 크기가 같기 때문에 문제가 없는 것이 아닙니다.
이전 강의에서 학습하셨듯이, int 자료형과 float 자료형이 숫자를 표현하는 방식은 다릅니다.

강의에서 위 예시가 등장한 부분의 주제는 암시적 형변환의 numeric conversion 입니다.
암시적 형변환의 numeric conversion 은 각 자료형이 표현할 수 있는 정밀도에 따라서 데이터 손상이 일어날 수도 있고 아닐 수도 있습니다.

하지만, 강의에서 교수님께서 설명하신 것 처럼 "그럼에도 불구하고 CPP 언어에서는 최선을 다해서 형변환 후 숫자를 표현"을 합니다.
해당 맥락에서 다양한 자료형들간의 암시적 형변환의 nuemric conversion 에 대한 예시 중 하나로 생각해주시면 될 것 같습니다.

추가적으로, int 자료형의 정수 16777217float 으로 암시적 형변환을 진행한 후 출력해보시면 16777216 으로 1 만큼의 정밀도가 손상되어 출력이 될 것입니다.
이는 위에서 말씀드린 것처럼, int 자료형과 float 자료형이 숫자를 표현하는 방식이 다르기 때문입니다.
자료형의 크기가 같은 것은 문제 유/무의 기준이 아닙니다.

yahoo님의 프로필

yahoo

질문자

2023.05.01

와!!! 제가 완전히 착각하고 있었군요! 짚어주셔서 감사합니다 :)