-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
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;
위 예시를 보여주신 의도를 알고 싶습니다
답변을 작성해보세요.
2
Soobak
2023.04.29
안녕하세요, 답변 도우미 Soobak 입니다. 😀
자료형의 크기가 같기 때문에 문제가 없는 것이 아닙니다.
이전 강의에서 학습하셨듯이, int
자료형과 float
자료형이 숫자를 표현하는 방식은 다릅니다.
강의에서 위 예시가 등장한 부분의 주제는 암시적 형변환의 numeric conversion
입니다.
암시적 형변환의 numeric conversion
은 각 자료형이 표현할 수 있는 정밀도에 따라서 데이터 손상이 일어날 수도 있고 아닐 수도 있습니다.
하지만, 강의에서 교수님께서 설명하신 것 처럼 "그럼에도 불구하고 CPP 언어에서는 최선을 다해서 형변환 후 숫자를 표현"을 합니다.
해당 맥락에서 다양한 자료형들간의 암시적 형변환의 nuemric conversion
에 대한 예시 중 하나로 생각해주시면 될 것 같습니다.
추가적으로, int
자료형의 정수 16777217
을 float
으로 암시적 형변환을 진행한 후 출력해보시면 16777216
으로 1
만큼의 정밀도가 손상되어 출력이 될 것입니다.
이는 위에서 말씀드린 것처럼, int
자료형과 float
자료형이 숫자를 표현하는 방식이 다르기 때문입니다.
자료형의 크기가 같은 것은 문제 유/무의 기준이 아닙니다.
답변 1