float에 대한 비교연산에서 이상한 문제점
글쓴이: dltkddyd / 작성시간: 화, 2012/05/08 - 12:18오후
float형과 int형의 차이에 대한 비교연산에서 컴파일러가 조건을 제대로 이해하지 못하는 것 같습니다. 다음과 같은 소스가 이상하게 실행이 되네요.
const float realpart=0.4f;
float replacedrealpart=realpart;
int replacedintpart;
if(realpart!=0) {
replacedintpart=replacedrealpart;
while((replacedrealpart-replacedintpart)>0) {
replacedrealpart*=10;
replacedintpart=replacedrealpart;
cout<<"0 이상입니다."<<endl;
}
}
위의 코드를 실행했을 때 루프는 한 번만 돌 것이라 예상했는데 여러 번 루프를 돕니다. 루프가 한 번만 돌도록 만들고 싶은데, 안되네요.
그런데 replacedrealpart 선언 부분을 다음과 같이 고치면, 루프는 한 번만 돕니다.
float replacedrealpart=0.4f;
Forums:
댓글 달기