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; 정상
'C & C++' 카테고리의 다른 글
하드웨어적인 방법을 이용한 진정한 랜덤함수 (0) | 2015.08.27 |
---|