C & C++
float 연산에서 주의사항
mizzhin
2014. 12. 19. 10:53
float 연산에서의 주의사항
float를 와 int를 연산할때 발생하는 오류 및 주의사항입니다.
알고잇는 항목이지만 코딩을 할때 의외로 실수를 많이 할수있는 사항이라 주의해야합니다.
int64_t = (int64_t)( int64_t+ float); —> 결과가 이상할수있다.
int64_t = ( int64_t+ (int64_t)(float); —> 결과가 정상입니다.
더하기 연산뿐 아니라 곱하기 연산등에도 모두 포함됩니다.
float는 float끼리 연산을 하고 전체 결과에 형변환을 하는것이 좋습니다.
예시
int64_t aaaa = 11111111111111;
float bbbb = 2222;
int64_t cccc = (int64_t)( aaaa + bbbb );
int64_t dddd = cccc + (int64_t)bbbb;
cccc = 11111111131111; 2222가 더해져야하는데 30000~40000이 더해집니다.
dddd = 11111111113333; 정상