If the implementation supports any of the following ISO 60559 types as an extended floating point type, then:
Type name Defined in header <stdfloat> | Literal suffix | Predefined macro | C language type | Type properties | |||
---|---|---|---|---|---|---|---|
bits of storage | bits of precision | bits of exponent | max exponent | ||||
std::float16_t |
f16 or F16 |
__STDCPP_FLOAT16_T__ |
_Float16 | 16 | 11 | 5 | 15 |
std::float32_t |
f32 or F32 |
__STDCPP_FLOAT32_T__ |
_Float32 | 32 | 24 | 8 | 127 |
std::float64_t |
f64 or F64 |
__STDCPP_FLOAT64_T__ |
_Float64 | 64 | 53 | 11 | 1023 |
std::float128_t |
f128 or F128 |
__STDCPP_FLOAT128_T__ |
_Float128 | 128 | 113 | 15 | 16383 |
std::bfloat16_t |
bf16 or BF16 |
__STDCPP_BFLOAT16_T__ | (N/A) | 16 | 8 | 8 | 127 |
The type std::bfloat16_t
is known as Brain Floating Point.
Unlike the fixed width integer types, which may be aliases to standard integer types, the fixed width floating-point types must be aliases to extended floating point types (not float / double / long double).
#include <stdfloat> int main() { std::float64_t f = 0.1f64; }
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/floating-point