728x90
반응형
개요
c++에서 소수점 아래 표현하는 방법을 알아보겠습니다.
목차
1. 자료형 범위
2. 소수점을 표현할 수 있는 자료형
3. 수의 표현 방법
자료형 범위
구분 | 자료형 | byte | 범위 | 비고 |
기본형 | void | – | – | |
문자형 | (signed) char | 1 byte | -128 ~ 127 | |
unsigned char | 1 byte | 0 ~ 255 | ||
wchar_t | 2 byte | 0 ~ 65,535 | ||
정수형 | bool | 1 byte | 0 ~ 1 | |
(signed) short (int) | 2 byte | -32,768 ~ 32,767 | ||
unsigned short (int) | 4 byte | 0 ~ 65,535 | ||
(signed) int | 4 byte | -2,147,483,648 ~ 2,147,483,647 | OS bit 따라다름 | |
unsigned int | 4 byte | 0 ~ 4,294,967,295 | ||
(signed) long (int) | 4 byte | -2,147,483,648 ~ 2,147,483,647 | OS bit 따라다름 | |
unsigned long (int) | 4 byte | 0 ~ 4,294,967,295 | ||
__int8 | 1 byte | -128 ~ 127 | ||
__int16 | 2 byte | -32,768 ~ 32,767 | ||
__int32 | 4 byte | -2,147,483,648 ~ 2,147,483,647 | ||
__int64 | 8 byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 | ||
실수형 | float | 4 byte | 3.4E-38(-3.4*10^38) ~ 3.4E+38(3.4*10^38) (7digits) | |
(long) double | 8 byte | 1.79E-308(-1.79*10^308) ~ 1.79E+308(1.79*10^308) (15digits) |
* int는 시스템의 기본연산 단위를 사용한다. (16bit=>2byte, 32=>4byte, 64=>4byte)
* 64bit에서 long형을 8byte로 확장하였다. (16bit=>4byte, 32=>4byte, 64=>8byte)
64bit OS에서 자료형 byte
소수점을 표현 할 수 있는 자료형
float와 double 자료형은 소수점 이하까지 표현이 가능합니다.
수의 표현 범위
1. 단순 출력시
자료형 | 출력 범위 | 결과 |
float | 소수점 이상 부분 포함 6자리 |
1 / 3 = 0.333333 300001 / 3 = 100000 |
double | 소수점 이상 부분 포함 6자리 | 1 / 3 = 0.333333 300001 / 3 = 100000 |
2. 전체 출력 범위 지정 있을 때
아래와 같이 cout을 설정 시 최대 숫자 표시는 9자리까지만 표시가 됩니다.
std::cout.precision(24);
자료형 | 출력 범위 | 결과 |
float | 소수점 이상 부분 포함 최대 9자리 출력 |
1 / 3 = 0.333333343267440795898438 300001 / 3 = 100000.3359375 |
double | 소수점 이상 부분 포함 최대 9자리 출력 | 1 / 3 = 0.333333333333333314829616 300001 / 3 = 100000.333333333328482695 |
여기서 중요한 차이점이 나옵니다.
float는 7짜리 까지만 정확히 표현가능
double는 16짜리 까지만 정확히 표현가능
3. 수점 이하 출력 범위 지정 있을 때
// 아래 코드의 뜻은 소수점 이하의 출력을 24글자까지 고정하여 출력 하겠다는 의미
std::cout << std::fixed; //소수점 이하 출력을 precision에서 설정한 값까지 보장
std::cout.precision(24);
자료형 | 출력 범위 | 결과 |
float | 소수점 이상 부분 포함 최대 9자리 출력 |
1 / 3 = 0.333333343267440795898438 300001 / 3 = 100000.335937500000000000000000 |
double | 소수점 이상 부분 포함 최대 9자리 출력 | 1 / 3 = 0.333333333333333314829616 300001 / 3 = 100000.333333333328482694923878 |
여기서도 역시
float는 7짜리 까지만 정확히 표현가능
double는 16짜리 까지만 정확히 표현가능
4. std::string을 숫자로 변경하는 함수
stoi = string to int
stof = string to float
stol = string to long
stod = string to double
https://blockdmask.tistory.com/333
정리
수의 전체 표현 길이 제한은 std::cout.precision();으로 제한합니다.
여기에 std::cout << fixex;를 하게 되면 소수점 이하의 출력을 std::cout.precision()에서 설정한 만큼 보장하겠다는 의미입니다.
728x90
반응형
'프로그래밍 > 코테 기반 지식' 카테고리의 다른 글
[코지] c++ 숫자 문자 구분 (0) | 2023.01.26 |
---|---|
[코지] c++ 프로그램의 인자를 받는 처리하는 방법 (0) | 2023.01.25 |
[코지] 수학적 개념 정리 (0) | 2022.11.24 |
[코지] DFS, BFS 정리 (0) | 2022.11.02 |
[코테 준비] 문제별 알아야 할 개념과 함수 (0) | 2022.06.27 |