2016년 9월 13일 화요일

Postmortem - float 연산자 casting 오류

코드 리뷰중 아래와 같은 문제를 확인하였다.
float value 연산시 생길 수 있는 흔한 실수이므로 주의가 필요하다.

#include <stdio.h>

void print(float val)
{
    printf("val : %3.3f\n", val);
}

int main(void)
{
    int val = 5204;
    print(val/100);     // 의도하지 않은 코드
    print(static_cast<float>(val)/100);    // 원래 의도한 코드
}

결과는 아래와 같다.

val : 52.000 <- 의도하지 않은 결과
val : 52.040 <- 의도한 결과

댓글 없음:

댓글 쓰기