노트

c++) pow 함수와 부동소수점

tose33 2022. 2. 10. 22:11

pow 함수를 사용하다가 계속 이상한 값이 리턴되서 찾아봤는데 부동소수점 오차 때문이었다.

저번에 PS 문제 풀다가도 비슷한 일이 있었다 (https://tose33.tistory.com/441).

 

이번에 문제는 pow() 함수가 리턴한 값을 int 형에 받아버려서 일어났다.

pow() 함수는 double 형을 리턴하고 이때 부동소수점 오차가 일어날수 있다.

예를들어 pow() 함수가 24.99999999999.. 를 리턴하고 이 값을 int 형으로 받아버리면 내가 원한 값은 25였지만 저장되는 값은 24가 되버린다.

 

https://stackoverflow.com/questions/14714115/strange-powx-y-behaviour

 

Strange pow(x, y); behaviour

While doing my homework I noticed something really strange that I just can't figure out why. int x = 5; cout << pow(x, 2); The result is 25. That's fine. But if I write the same program lik...

stackoverflow.com