固定寬度浮點型別 (C++23 起)
來自 cppreference.com
如果實現支援以下任何 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__ | (不適用) | 16 | 8 | 8 | 127 |
目錄 |
[編輯] 注意
型別 std::bfloat16_t
被稱為 Brain 浮點。
與 固定寬度整數型別 不同,後者可能是 標準整數型別 的別名,固定寬度浮點型別必須是擴充套件浮點型別(而不是 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]