Namespaces
Variants

std::numeric_limits<T>:: has_denorm_loss

From cppreference.net
Utilities library
static const bool has_denorm_loss ;
(jusqu'à C++11)
static constexpr bool has_denorm_loss ;
(depuis C++11)
(obsolète en C++23)

La valeur de std:: numeric_limits < T > :: has_denorm_loss est true pour tous les types à virgule flottante T qui détectent la perte de précision lors de la création d'un nombre sous-normal comme une perte de dénormalisation plutôt que comme un résultat inexact (voir ci-dessous).

Table des matières

Spécialisations standards

T valeur de std:: numeric_limits < T > :: has_denorm_loss
/* non-spécialisé */ false
bool false
char false
signed char false
unsigned char false
wchar_t false
char8_t (depuis C++20) false
char16_t (depuis C++11) false
char32_t (depuis C++11) false
short false
unsigned short false
int false
unsigned int false
long false
unsigned long false
long long (depuis C++11) false
unsigned long long (depuis C++11) false
float défini par l'implémentation
double défini par l'implémentation
long double défini par l'implémentation

Notes

Les implémentations conformes aux normes IEEE 754 pour les nombres flottants sous-normaux doivent détecter la perte de précision associée à la création de tels nombres, si elle se produit, et peuvent le faire de l'une des deux manières distinctes :

  1. Perte de dénormalisation : le résultat fourni diffère de ce qui aurait été calculé si la plage d'exposants était illimitée.
  2. Résultat inexact : le résultat fourni diffère de ce qui aurait été calculé si la plage d'exposants et la précision étaient illimitées.

Aucune implémentation du mécanisme de perte par dénormalisation n'existe (la perte de précision est détectée après l'arrondi, comme résultat inexact), et cette option a été supprimée dans la révision 2008 de la norme IEEE Std 754.

libstdc++, libc++, libCstd et stlport4 définissent cette constante comme false pour tous les types à virgule flottante. Microsoft Visual Studio la définit comme true pour tous les types à virgule flottante.

Comme pour tout calcul en virgule flottante, une perte de précision peut déclencher FE_INEXACT .

Exemple

Voir aussi

identifie les types à virgule flottante qui détectent la dénormalisation avant l'arrondi
(constante de membre statique publique)
[static]
identifie le style de dénormalisation utilisé par le type à virgule flottante
(constante de membre statique publique)