https://www.acmicpc.net/problem/2755
https://www.acmicpc.net/board/view/21096
위 백준 문제를 풀면서 double로 하면 틀리는데 float으로 하면 맞는 이상한 일이 있었다.
그래서 해당 문제 질문하기 설명들을 읽어봤는데 이런 말이 있다.
원하는 값 : 소수점 4번째 자리에서 반올림해서 3.005가 나오도록
float으로 계산한 결과 : 3.0059
double로 계산한 결과 : 3.0049
이 상황에선 double이 원하는 값과 오차가 더 적다.
하지만 소수점 3번째 자리에서 반올림해서 3.01을 만들고자 한다면?
double은 3.0049니까 0.0051차이, float은 3.0059니까 0.59차이로 double이 더 오차가 적은 상황이다.
근데 반올림 하는 순간 double은 3.00, float은 3.01이 되어서 오히려 float이 더 정확한 값이 되어버린다.
그러니까 결국 정밀도가 더 높다고해서 반올림한 결과도 더 올바른것이라고 보장할 수는 없다.
보통 알고리즘 문제에선 이런 애매한 상황이 나오지 않게 스페셜저지를 해주는데
실제 개발상황이라면 값을 예측하기 굉장히 힘들어질 듯 하다...