固定宽度浮点类型 (自 C++23 起)
来自 cppreference.com
如果实现支持以下任何 ISO 60559 类型作为扩展浮点类型,则
- 相应的宏定义为 1 以指示支持,
- 相应的 浮点文字 后缀可用,以及
- 提供相应的类型别名名称
类型名称 定义在头文件中 <stdfloat> |
文字后缀 | 预定义宏 | C 语言类型 | 类型属性 | |||
---|---|---|---|---|---|---|---|
存储位 | 精度位 | 指数位 | 最大指数 | ||||
std::float16_t | f16 或 F16 | __STDCPP_FLOAT16_T__ | _Float16
|
16 | 11 | 5 | 15 |
std::float32_t | f32 或 F32 | __STDCPP_FLOAT32_T__ | _Float32
|
32 | 24 | 8 | 127 |
std::float64_t | f64 或 F64 | __STDCPP_FLOAT64_T__ | _Float64
|
64 | 53 | 11 | 1023 |
std::float128_t | f128 或 F128 | __STDCPP_FLOAT128_T__ | _Float128
|
128 | 113 | 15 | 16383 |
std::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]