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
|
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