Namespaces
Variants

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

From cppreference.net
Utilities library

Si la implementación admite cualquiera de los siguientes ISO 60559 tipos como un tipo de punto flotante extendido, entonces:

  • la macro correspondiente se define como 1 para indicar compatibilidad,
  • el sufijo floating-point literal correspondiente está disponible, y
  • se proporciona el nombre del alias de tipo correspondiente:
Tipos
Definidos en el encabezado
<stdfloat>
Sufijo literal Macro predefinida Tipo de lenguaje C Propiedades del tipo
bits de almacenamiento bits de precisión bits de exponente exponente máximo
float16_t f16 o F16 __STDCPP_FLOAT16_T__ _Float16 16 11 5 15
float32_t f32 o F32 __STDCPP_FLOAT32_T__ _Float32 32 24 8 127
float64_t f64 o F64 __STDCPP_FLOAT64_T__ _Float64 64 53 11 1023
float128_t f128 o F128 __STDCPP_FLOAT128_T__ _Float128 128 113 15 16383
bfloat16_t bf16 o BF16 __STDCPP_BFLOAT16_T__ (N/A) 16 8 8 127

Contenidos

Notas

El tipo std::bfloat16_t se conoce como Brain Floating-Point .

A diferencia de los tipos de enteros de ancho fijo , que pueden ser alias de tipos de enteros estándar , los tipos de punto flotante de ancho fijo deben ser alias de tipos de punto flotante extendidos (no float / double / long double ), por lo tanto no son reemplazos directos para tipos de punto flotante estándar.

Ejemplo

#include <stdfloat>
#if __STDCPP_FLOAT64_T__ != 1
    #error "64-bit float type required"
#endif
int main()
{
    std::float64_t f = 0.1f64;
}

Referencias

  • Estándar C++23 (ISO/IEC 14882:2024):
  • 6.8.3 Tipos de punto flotante extendidos opcionales [basic.extended.fp]

Véase también