Spec-Zone.ru › C++

std::numeric_limits<T>::has_denorm_loss

static const bool has_denorm_loss;
(до C++11)
static constexpr bool has_denorm_loss;
(с C++11)
(устарело в C++23)

Значение std::numeric_limits<T>::has_denorm_loss равно true для всех типов с плавающей точкой T, которые обнаруживают потерю точности при создании числа с пониженной значимостью как потерю денормализации, а не как неточное значение (см. ниже).

Стандартные специализации

T значение std::numeric_limits<T>::has_denorm_loss
/* неспециализированный */ false
bool false
char false
signed char false
unsigned char false
wchar_t false
char8_t (с C++20) false
char16_t (с C++11) false
char32_t (с C++11) false
short false
unsigned short false
int false
unsigned int false
long false
unsigned long false
long long (с C++11) false
unsigned long long (с C++11) false
float определяется реализацией
double определяется реализацией
long double определяется реализацией

Примечания

Стандартные реализации IEEE 754 с плавающей точкой для чисел с пониженной значимостью должны обнаруживать потерю точности, связанную с созданием такого числа, если это происходит, и могут делать это двумя различными способами:

  1. Потеря денормализации: полученный результат отличается от того, что был бы вычислен, если бы диапазон показателей был неограниченным.
  2. Неточный результат: полученный результат отличается от того, что был бы вычислен, если бы диапазон показателей и точность были неограниченными.

Ни одна реализация механизма потери денормализации не существует (потеря точности обнаруживается после округления, как неточный результат), и этот вариант был удален в пересмотре IEEE Std 754 2008 года.

libstdc++, libc++, libCstd и stlport4 определяют эту константу как false для всех типов с плавающей точкой. Microsoft Visual Studio определяет ее как true для всех типов с плавающей точкой.

Как и при любых вычислениях с плавающей точкой, потеря точности может вызвать FE_INEXACT.

Пример

См. также

tinyness_before
[static]
определяет типы с плавающей точкой, которые обнаруживают малые значения до округления
(общедоступная статическая константа)
has_denorm
[static]
определяет стиль денормализации, используемый типом с плавающей точкой
(общедоступная статическая константа)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/types/numeric_limits/has_denorm_loss

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API