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
/* non-specialized */ false
bool false
char false
signedchar false
unsignedchar false
wchar_t false
char8_t (начиная с C++20) false
char16_t (начиная с C++11) false
char32_t (начиная с C++11) false
short false
unsignedshort false
int false
unsignedint false
long false
unsignedlong false
longlong (начиная с C++11) false
unsignedlonglong (начиная с C++11) false
float определяется реализацией
double определяется реализацией
longdouble определяется реализацией

Примечания

В соответствующих стандарту 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/cpp/types/numeric_limits/has_denorm_loss

Spec-Zone.ru

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