Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 정렬알고리즘
- 람다
- map
- UML관련
- 자료구조
- 언리얼가비지컬렉터
- 델리게이트
- UE4 커스텀로그
- 람다사용정렬
- C++최적화
- dataasset
- 강참조
- moreeffectiveC++
- stl
- C++
- BFS
- 언리얼엔진구조체
- 애셋로드
- 알고리즘
- 크리티컬섹션
- UELOG
- 프로그래머스
- 약참조
- enumasByue
- 데이터애셋
- 선택정렬
- 스마트포인터
- unorder_map
- UE_LOG
- 정렬
Archives
- Today
- Total
기억을 위한 기록들
[CPP] C++에서의 1e-6f 란? (과학적 표기법/scientific notation) 본문
언리얼엔진4 소스 UCharacterMovementComponent 를 살펴보던 중 아래와 같은 변수를 발견했다.
const float UCharacterMovementComponent::MIN_TICK_TIME = 1e-6f;
여기서 1e-6f은 무슨 뜻일까? 과학적 표기법(scientific notation)으로 위키에 의하면,
과학적 표기법은 너무크거나 너무 작은 숫자들을 다 표기하거나, 사용하기엔 불편해서(?) 십진법으로 편하게 사용하기위해 만든것 같다.
그 중에서도 소수점 관련하여 아랫부분에
1 -> 계수
e -> e는 10이라고 보면 된다 ( 계수 * e). 지수로 10을 제곱하여 확장한다
-6 -> e의 지수
즉,
1e-6f -> 1 x 10^-6 -> 0.000001을 뜻한다.
반대로
1e6f는 1 x 10^6 - >1000000.0f가 된다.
1e2f 는 100이 된다.
잘사용만 한다면 편리할것같지만,자칫 잘못 쓴다면 더 헷갈릴수도 있을것같다.
특이한점은 해당 변수를 출력해보면,
int main()
{
const float a = 1e-6f;
const float b = 0.000001f;
cout << a << endl;
cout << b << endl;
bool result = a == b;
cout << result << endl;
const float c = 0.0001f;
const float d = 0.00001f;
cout << c << endl;
cout << d << endl;
return 0;
}
a,b 둘다 1e-06 그대로 나온다.
비교 연산자를 해보니 같다는 결과가 나오고,
변수 c까지만 값 그대로 출력되고, d부터(소수점 5번째부터)도 1e-05라고 출력된다.
이런숫자들은 방치형 게임에서 무한하게 늘어나는 숫자들을 표기하기도 한다.
참고사이트 :
https://calculator.name/scientific-notation-to-decimal/1e-6#google_vignette
https://ko.wikipedia.org/wiki/%EC%9E%90%EC%97%B0%EB%A1%9C%EA%B7%B8%EC%9D%98_%EB%B0%91
'C & CPP' 카테고리의 다른 글
[CPP]std::function에 관하여 (0) | 2022.02.02 |
---|---|
[CPP] using 과 typedef (0) | 2021.11.10 |
[CPP] C++ 최적화에 관하여 (3-3) (0) | 2021.08.22 |
[CPP] C++ 최적화에 관하여 (2-3) (0) | 2021.08.16 |
[CPP] C++ 최적화에 관하여 (1-3) (0) | 2021.07.25 |