1. Float 형의 오차 발생 이유와 범위
- 고정 소수점(Fixed Point) vs 부동 소수점(Floating Point)
- float은 부동 소수점이라는 의미이며 부동 소수점이 고정 소수점보다 큰 수를 다룰 수 있다.
- 고정 소수점은 정수부를 표현하는 비트와 소수부를 표현하는 비트가 나눠져있는 반면에 부동 소수점은 유효숫자를 표현하는 비트와 몇 승으로 이루어진 지를 표현하는 비트가 나눠져 있다.
- 0.5, 0.25, 0.125, 0.0625, ... 의 방식으로 소수점 밑 부분을 표현하기 때문에 0.1 이라는 숫자를 정확히 표현할 방법이 없다.
- float의 경우 대략 10의 38승까지 표현할 수 있고 이는 엄청 큰 숫자인 것이 int형이 대략 21억, 10의 10승 정도 밖에 표현하지 못 한다.
2. int, float을 string 으로 변환
- 사용하는 측면에 있어선 #include <string> 후 to_string 함수를 이용하면 된다.
#include <iostream>
#include <string>
int main()
{
std::string Test;
int IntNumber = 123;
float FloatNumber = 123.456f;
double DoubleNumber = 456.789;
char TestChar = 'c';
Test = std::to_string(IntNumber);
std::cout << Test << std::endl;
Test = std::to_string(FloatNumber);
std::cout << Test << std::endl;
Test = std::to_string(DoubleNumber);
std::cout << Test << std::endl;
Test = std::to_string(TestChar);
std::cout << Test << std::endl;
return 0;
}
3. string을 int, float으로 변환
- #include <string> 후 stoi 혹은 stof, stod, stoll (i : int, f : float, d : double, ll : long long)
#include <iostream>
#include <string>
int main()
{
std::string Test("123");
int IntNum = std::stoi(Test);
std::cout << IntNum << std::endl;
Test = "123.456";
float FloatNum = std::stof(Test);
std::cout << FloatNum << std::endl;
return 0;
}
'C++ > 키워드 정리' 카테고리의 다른 글
키워드 정리 [10] - Template (0) | 2023.12.01 |
---|---|
키워드 정리 [9] - 포인터 (1) | 2023.12.01 |
키워드 정리 [7] - 컴파일 (1) | 2023.12.01 |
키워드 정리 [6] - 함수 호출 규약 (0) | 2023.12.01 |
키워드 정리 [5] - 동적 할당 (1) | 2023.12.01 |