固定幅浮動小数点型 (C++23 以降)
From 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 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]