실수형(float)로 변수를 선언하고 그 변수에 실수값을 저장한 후
저장되어 있는 실수값을 출력해보자.
참고
float x;
scanf("%f", &x);
printf("%f", x);
와 같은 방법으로 가능하다.
#include <iostream>
using namespace std;
int main(void)
{
float n;
cin >> n;
cout.setf(ios::showpoint);
cout.precision(7);
cout << n;
return 0;
}
처음에는 단순하게 접근하였다.
그냥 자료형을 바꿔주고 cin과 cout을 하면 될 줄 알았다.
그런데 아래와 같이 에러가 발생한 걸 알 수 있었다.
소수점 표현하는 것에서 문제가 발생하는 것이었다.
C언어에서는 아래처럼 서식지정자 앞에 소수점 표현 범위(%.4f 등..)를 설정해서 소수점을 표현할 수 있었지만 C++은 따로 설정을 해줘야 했다.
C언어 케이스
#include <stdio.h>
int main(void)
{
float num = 1234.52f;
printf("%.0f\n", num);
printf("%.1f\n", num);
printf("%.2f\n", num);
printf("%.3f\n", num);
printf("%.4f\n", num);
}
C++ 케이스
이곳저곳 검색해보니 많이 쓰이는 라이브러리가 <iomanip>였다.
iomanip의 약자는 Input Output Manipmanipulation 라고 한다.
그러나 이 라이브러리를 사용하지 않고도 소수점을 표현할 수 있었다.
cout.setf
위 함수를 사용하면 소수점 출력 조절 및 지정한 자리 수까지 0으로 표현 가능한다.
cout.setf(ios::showpoint)
위 함수를 사용하면 소수점 표시 및 생략된 0들을 모두 출력한다.
cout.precision(표현할 자리수)
cout.precision(3)으로 설정하고 3.141592라고 하면 3.14만 출력되는 것을 알 수 있다.
즉, 3이라는 숫자가 소수점까지 표현하는 게 아니고 전체 자리수를 의미한다.
cout << fixed; + cout.precision(표현할 자리수);
만약 위와 함께 같이 쓴다면 소수점은 고정시켜놓은 상태로 표현할 자리수가 소수점에만 해당되므로
표현할 자리수가 3으로 했을 때 3.142(반올림)까지 출력 되는 것을 알 수 있다.
'알고리즘 > codeup 기초 100제' 카테고리의 다른 글
1017 : [기초-입출력] 정수 1개 입력받아 3번 출력하기(설명) (0) | 2021.01.19 |
---|---|
1013 : [기초-입출력] 정수 2개 입력받아 그대로 출력하기(설명) (0) | 2021.01.19 |
1011 : [기초-입출력] 문자 1개 입력받아 그대로 출력하기(설명) (0) | 2021.01.19 |
1010 : [기초-입출력] 정수 1개 입력받아 그대로 출력하기(설명) (0) | 2021.01.19 |
1008 : [기초-출력] 출력하기08(설명) (0) | 2021.01.19 |