반응형

소프티어의 "성적 평균" 문제를 풀다가 "평균을 소수점 셋째 자리에서 반올림하여 표시" 하도록 요구되어 있었다.

printf에서는 "%.2f"엿던가..? 

 

c++에서 iomanip 헤더에 있는 setprecision을 사용하면 소수점 반올림이 가능하다.

 

cout으로 출력을 낼 때는 다음 두가지 경우로 나누어 표현할 수 있다 

 

✔ fixed를 안붙이는 경우

double a = 3.1415
cout<<setprecision(3)<<a<<endl;

//출력 : 3.14

fixed의 역할은 고정 소수점 표기를 해주는 것인데, 위처럼 fixed를 쓰지 않으면, setprecision(3)에 의해서 3번째 자리수에서 반 올림하고, 3.14로 출력된다.

만약 a가 3.000이었다면, 소수점이하의 값은 날라가서 3으로 출력된다.

 

✔ fixed를 붙이는 경우

double a = 3.1415
cout<<fixed<<setprecision(3)<<a<<endl;
//출력 : 3.142

 fixed를 붙이면 3번 째 자리까지 반올림 된 값이 출력이 된다.

 

따라서 문제에서는 3번째 자리에서 반올림하여 둘째 자리까지 표시되도록 (3.00) 하였으므로, fixed를 붙이고 setprecision(2)로 하여 출력하였다.

 

 

반응형

+ Recent posts