소수점 개수(자리, 범위) 지정 방법 정리
코딩을 하거나 백준 문제를 풀거나 하다 보면
소수(실수)를 출력하는 경우가 생깁니다.
특히 소수점의 개수를 지정해줘야 하는 경우가 많이 생기는데
오늘은 그 방법을 한번 알아보겠습니다.
참고로 C언어, C++ 두 개 모두 방법을 알아볼 예정입니다.
가장 먼저 C언어에서 알아보겠습니다.
C언어
C언어에서는 출력 시 printf를 주로 사용하는데 이곳에서 바로 지정해 줄 수 있습니다.
printf, scanf는 입력, 출력 시 자료형을 직접 지정해 줘서 번거로운데
이 단점이 소수를 출력해 줄 때에는 장점이 됩니다.
아래 코드를 살펴봅시다.
#include<stdio.h>
int main(void)
{
double a=123456.123456789;
printf("%.9lf", a);
}
원래 출력할 때 "%lf"라고 하였는데 소수점 개수를 지정해 주려면
위 코드처럼 그냥 출력 시 % 뒤에 ".(숫자)"를 추가해 주면 됩니다.
'숫자'만큼 소수가 출력이 됩니다.
위의 예제에서는 소수 9개가 출력이 됩니다.
참고로 소수를 출력할 때에는 float 자료형보다 double 자료형이 더 좋습니다.
float 자료형은 범위가 좁아 오차가 생길 확률이 큽니다.
추가로 한 가지 알아야 할 점이 있는데
먼저 아래 코드를 봅시다.
#include<stdio.h>
int main(void)
{
double a=123456.123456789;
printf("%.8lf", a);
}
이 코드의 출력값은 아래와 같습니다.
보면 원래 소수점 아래 8번째 값은 원래 8인데 9가 출력이 되었습니다.
이는 반올림되었기 때문입니다.
8 다음 값은 9인데 이 값은 출력하지 않습니다. 대신에
반올림하는데 이용이 됩니다.
이점을 알아둡시다.
C++
C++에서 소수점 개수를 지정해 주려면
C언어보다는 조금 더 복잡합니다.
크게 두 가지 방법이 있습니다.
살펴봅시다.
fixed, precision 이용
아래 코드를 봅시다.
#include<iostream>
using namespace std;
int main()
{
double a=123456.123456789;
cout<<fixed;
cout.precision(8);
cout<<a;
}
cout<<fixed를 적은 다음
cout.precision(number)를 적습니다.
number가 출력하고 싶은 소수점 자릿수입니다.
그리고 이 방법도 C언어에서의 방법과 마찬가지로 반올림이 적용됩니다.
setprecision 이용
다음 방법은 setprecision을 이용한 방법입니다.
이를 사용하기 위해선 <iomanip> 라이브러리를 추가해야 합니다.
그다음 setprecision함수를 사용하면 됩니다.
int main()
{
double a=123456.123456789;
cout<<setprecision(15);
cout<<a;
}
위 코드의 출력값입니다.
setprecision 함수 안에 들어가는 수는
정수 + 소수 부분의 개수입니다.
double a의 값을 보면 정수 부분이 6자리, 소수 부분이 9자리여서
모두 출력하려면 setprecision(15)를 해줘야 합니다.
아래 백준 문제를 풀어보면서 오늘 배운 내용을 익혀봅시다.
백준 1008 : A/B(브론즈 5)
이상 소수점 개수 지정 방법에 대하여 알아보았습니다.
'코딩 > 기타 정보글' 카테고리의 다른 글
아스키 코드 표 (0) | 2024.02.26 |
---|---|
[C언어/C++,자바,파이썬] 온라인 컴파일러 사이트 추천 (1) | 2024.02.12 |
[C++] 1차원, 2차원, 3차원 배열 초기화 정리(fill, fill_n,memset,전역,지역) (0) | 2024.02.12 |
아스키코드(ASCII Code) 정리, 활용 (1) | 2024.02.11 |
백준 Solved.ac 연동하기 (0) | 2024.02.11 |