Namespaces
Variants

Fixed width floating-point types (since C++23)

From cppreference.net
Utilities library

Если реализация поддерживает любой из следующих 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__ (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]

Смотрите также