Spec-Zone.ru › C++

Типы с фиксированной шириной для чисел с плавающей точкой (с C++23)

Если реализация поддерживает любой из следующих типов 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__ (Н/Д) 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:2023):
    • 6.8.3 Необязательные расширенные типы чисел с плавающей точкой [basic.extended.fp]

См. также

  • Основные типы

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/floating-point

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API