Namespaces
Variants

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

From cppreference.net
Utilities library

Si l'implémentation prend en charge l'un des types ISO 60559 suivants comme type flottant étendu, alors :

  • la macro correspondante est définie comme 1 pour indiquer la prise en charge,
  • le suffixe littéral à virgule flottante correspondant est disponible, et
  • le nom d'alias de type correspondant est fourni :
Types
Défini dans l'en-tête
<stdfloat>
Suffixe littéral Macro prédéfinie Type langage C Propriétés du type
bits de stockage bits de précision bits d'exposant exposant maximum
float16_t f16 ou F16 __STDCPP_FLOAT16_T__ _Float16 16 11 5 15
float32_t f32 ou F32 __STDCPP_FLOAT32_T__ _Float32 32 24 8 127
float64_t f64 ou F64 __STDCPP_FLOAT64_T__ _Float64 64 53 11 1023
float128_t f128 ou F128 __STDCPP_FLOAT128_T__ _Float128 128 113 15 16383
bfloat16_t bf16 ou BF16 __STDCPP_BFLOAT16_T__ (N/A) 16 8 8 127

Table des matières

Notes

Le type std::bfloat16_t est connu sous le nom de Brain Floating-Point .

Contrairement aux types entiers de largeur fixe , qui peuvent être des alias vers des types entiers standard , les types à virgule flottante de largeur fixe doivent être des alias vers des types à virgule flottante étendus (pas float / double / long double ), et ne sont donc pas des remplacements directs des types à virgule flottante standard.

Exemple

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

Références

  • Norme C++23 (ISO/IEC 14882:2024) :
  • 6.8.3 Types à virgule flottante étendus optionnels [basic.extended.fp]

Voir aussi