고정 너비 부동소수점 타입 (C++23 이후)
cppreference.net에서 발췌
구현체가 다음 ISO 60559 타입 중 하나라도 확장 부동소수점 타입으로 지원하는 경우:
- 해당 매크로는 지원을 나타내기 위해
1로 정의되며, - 해당 부동소수점 리터럴 접미어를 사용할 수 있고,
- 해당 타입 별칭 이름이 제공됩니다:
| 타입 헤더에 정의됨 <stdfloat> |
리터럴 접미어 | 미리 정의된 매크로 | C 언어 타입 | 타입 속성 | |||
|---|---|---|---|---|---|---|---|
| 저장 비트 수 | 정밀도 비트 수 | 지수 비트 수 | 최대 지수 | ||||
| float16_t | f16 또는 F16
|
__STDCPP_FLOAT16_T__
|
_Float16
|
16 | 11 | 5 | 15 |
| float32_t | f32 또는 F32
|
__STDCPP_FLOAT32_T__
|
_Float32
|
32 | 24 | 8 | 127 |
| float64_t | f64 또는 F64
|
__STDCPP_FLOAT64_T__
|
_Float64
|
64 | 53 | 11 | 1023 |
| float128_t | f128 또는 F128
|
__STDCPP_FLOAT128_T__
|
_Float128
|
128 | 113 | 15 | 16383 |
| bfloat16_t | bf16 또는 BF16
|
__STDCPP_BFLOAT16_T__
|
(N/A) | 16 | 8 | 8 | 127 |
참고 사항
타입
std::bfloat16_t
는
Brain Floating-Point
로 알려져 있습니다.
고정 너비 정수 타입 이 표준 정수 타입 의 별칭일 수 있는 것과 달리, 고정 너비 부동소수점 타입은 반드시 확장 부동소수점 타입( float / double / long double 이 아님)의 별칭이어야 하므로, 표준 부동소수점 타입의 완전 대체재가 아닙니다.
예제
이 코드 실행
#include <stdfloat> #if __STDCPP_FLOAT64_T__ != 1 #error "64-bit float type required" #endif int main() { std::float64_t f = 0.1f64; }
참조문헌
- C++23 표준 (ISO/IEC 14882:2024):
-
- 6.8.3 선택적 확장 부동 소수점 타입 [basic.extended.fp]