Типы с фиксированной шириной для чисел с плавающей точкой (с 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