서론
- 저번에 풀었던 소수점 출력 문제와 비슷한 문제입니다.
- 이번엔 cmath 라이브러리를 사용해 풀어보았습니다.
문제 설명
- 실수 a를 입력받아 a + 1.5의 값을 소숫점 2번째 자리까지 반올림하여
출력하는 문제입니다.
문제 접근 방법
- 소수점 출력 문제와 비슷하다고 판단하여 cmath 라이브러리의 함수들을 활용해보기로 했습니다.
- 특정 실수의 값을 소숫점 1번째 자리에서 반올림해주는 round()함수에 대해 알게 되었습니다.
- 전 소숫점 2번째 자리까지 반올림, 즉 3번째 자리에서 반올림해야 하므로
실수 a에 100을 곱한 후 round()를 사용, 다시 100을 나눠주는 방식을 채택했습니다.
문제 해결 과정
- 실수형 변수 a를 선언, 입력받은 a에 100을 곱하고 round()함수에 넣은 후 다시 100을 나눈다.
-> int a; round(a * 100) / 100.0;
- a에 1.5를 더한 후 출력한다.(1.5는 반올림 과정에 영향이 없기에 나중에 더해줘도 ok.)
-> cout << a + 1.5;
주의 사항
- c는 실수를 받아야하므로 float나 double로 선언할 것.
- round()함수는 소숫점 1번째 자리에서 수를 반올림함. 즉, 정수형 값을 반환하므로 100.0으로 나누어 값 손실이 없도록 할 것.
작성 코드
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float a;
cin >> a;
cout << round(a * 100) / 100.0 + 1.5;
return 0;
}
결과
- 예제1 - input : 5.26 -> output : 6.76
- 정상적으로 작동했습니다.
여담
- 역시 라이브러리를 쓰는게 코드도 간결하고 좋은 것 같습니다.
- 다음 번엔 좀 더 어려운 문제에 도전해보고 싶습니다.```