Namespaces
Variants

固定幅浮動小数点型 (C++23 以降)

ja.cppreference.net より
< cpp | 型
 
 
ユーティリティライブラリ
言語サポート
型サポート (基本型、RTTI)
ライブラリ機能テストマクロ (C++20)
プログラムユーティリティ
可変引数関数
コルーチンサポート (C++20)
契約サポート (C++26)
三方比較
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

汎用ユーティリティ
関係演算子 (C++20 で非推奨)
 
 

処理系が以下の 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]

関連項目