관리 메뉴

Humaneer.net

STL accumulate를 부동소수점(float, double) 배열이나 컨테이너에 사용 시 유의 사항 본문

Engineering/C/C++

STL accumulate를 부동소수점(float, double) 배열이나 컨테이너에 사용 시 유의 사항

Humaneer 2015.08.19 08:44

부동 소수점(float, double) 타잎의 배열이나 stl 컨테이너의 값을 sum할 때 유의사항.


루프를 돌면서 배열의 값을 다 더하는 것과 std::accumulate 의 결과가 다를경우가 발생할 수 있다.


아래 링크를 통해 결과 확인이 가능하다.

https://ideone.com/oBJVX8


이것 때문에 디버깅 하느라 꽤나 애먹었음. -_-;


그 이유는 accumulate의 3번째 인자인 init value의 형(type) 때문.

http://stackoverflow.com/questions/3604478/c-stdaccumulate-doesnt-give-the-expected-sum


template을 이용한 코딩을 할 때는

3번째 인자인 init value에 0을 T로 타잎 캐스팅 하면 됨.  static_cast<T>(0)






0 Comments
댓글쓰기 폼