기본적인 반올림, 올림, 내림
- 헤더 파일이 필요
- 기본적으로 반올림은 round( 숫자 ), 올림은 ceil( 숫자 ), 내림은 floor( 숫자 )이다
- 소숫점 1자리에서 진행된다.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
float num = 3.47;
cout << round(num) << "\n";
cout << ceil(num) << "\n";
cout << floor(num) << "\n";
}
[출력]
3
4
3
소숫점 n자리에서의 반올림, 올림, 내림
- 자리수를 조정하여 다음 함수를 이용하고, 다시 자릿수를 원래대로 놓아주면 된다.
예를 들어 소숫점 2번째 자리에서 반올림/올림/내림을 하려면,
10을 곱한 후에 다음 함수들을 이용하고, 다시 10으로 나눠서 반환하면 된다.
#include <iostream>
#include <cmath>
using namespace std;
int main(){
float num = 3.47;
float num1 = round(10 * num) / 10;
float num2 = ceil(10 * num) / 10;
float num3 = floor(10 * num) / 10;
cout << num1 << "\n";
cout << num2 << "\n";
cout << num3 << "\n";
}
[출력]
3.5
3.5
3.4
하지만, 다음 함수들은 소숫점이 0이면 따로 0을 표시하지 않는다!
num에 3.06을 넣어보면
#include <iostream>
#include <cmath>
using namespace std;
int main(){
float num = 3.06;
float num1 = round(10 * num) / 10;
float num2 = ceil(10 * num) / 10;
float num3 = floor(10 * num) / 10;
cout << num1 << "\n";
cout << num2 << "\n";
cout << num3 << "\n";
}
[출력]
3.1
3.1
3
그렇다면 3 이 아닌, 3.0이 표시되기 위해서는 어떻게 해야할까?
fixed 와 precision을 이용할 수 있다!
precision, fixed
- precision은 n개의 숫자만 나타내는 함수이고 (자동으로 반올림이 된다.)
- fixed는 소숫점을 고정시키는 함수이다.
소숫점을 고정시킨 후(fixed), precision을 하면 소숫점 n자리 까지 표시할 것을 명령한다. (이 때도 자동으로 반올림이 되므로 올림/내림 처리는 앞에서 진행한 후 마지막으로 이 함수로 표현해야 할 것이다.)
#include <iostream>
#include <cmath>
using namespace std;
int main(){
float num = 3.4356;
cout.precision(4);
cout << num << endl; //앞에서 부터 4개 (3.435 까지 출력하며 반올림 때문에 3.436)
cout << fixed; //소수점 고정
cout.precision(4);
cout << num << endl; //.(소수점)부터 뒤에 4개 출력
float num2 = 3.402;
cout.precision(2); //0까지 출력해준다.
cout << num2;
}
[출력]
3.436
3.4356
3.40
'알고리즘을 위한 간략 정리 > 입출력' 카테고리의 다른 글
[C++] memset 함수(메모리 초기화) (0) | 2024.08.26 |
---|---|
[C++] 파일의 끝(EOF)까지 입력받기 (0) | 2023.09.30 |