mjkim103301   4년 전

입력 

2 2

1 1000000

했을때 답이 499999.5 가 나와야 하는데 저는 500000이 나와 오차가 0.5 발생합니다.

평균과 표준편차의 자료형을 long double로 바꿔도 오차가 0.5 나옵니다.

그런데 double은 8바이트라서 충분히 표현할 수 있는 숫자인것 같은데 오차가 많이 나와서 어디를 고쳐야 하는지 모르겠습니다ㅠㅠ

solarmagic   4년 전

출력해야할 숫자가 커지다 보니 상대적으로 의미가 적은 소수점 부분이 반올림되어서 출력되었기 때문입니다.
소수점 출력을 강제하려면 cout << fixed << setprecision(10); 을 출력 전에 하시면 고정적으로 소수점이하 10자리를 출력합니다.
그러니 #include <iomanip> 를 하시고cout << min;  부분을 cout << fixed << setprecision(원하는 소수 자릿수) << min; 로하시면 됩니다.

mjkim103301   4년 전

제안해주신대로 바꿨는데도 틀렸습니다가 뜹니다.ㅠㅠ

djm03178   4년 전

fun_average 함수의 동작을 제가 이해한 바로는, 0~K-1, 1~K+1, 2~K+3, 3~K+5 이런 범위들에 대해서만 구하는 것 같네요. 0~K, 0~K+1, 0~K+2 등에 대한 표준편차를 구하지 않는 것 같네요.

mjkim103301   4년 전

제가 문제를 잘못 이해하고 있었네요~! 감사합니다.

댓글을 작성하려면 로그인해야 합니다.