본문 바로가기
Engineering/C/C++

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

by Humaneer 2015. 8. 19.

부동 소수점(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)