Namespaces
Variants

std::numeric_limits<T>:: denorm_min

From cppreference.net
Utilities library
static T denorm_min ( ) throw ( ) ;
(до C++11)
static constexpr T denorm_min ( ) noexcept ;
(начиная с C++11)

Возвращает минимальное положительное денормализованное значение типа T , если std:: numeric_limits < T > :: has_denorm ! = std:: denorm_absent , в противном случае возвращает std:: numeric_limits < T > :: min ( ) для типов с плавающей точкой и T ( ) для всех остальных типов. Имеет смысл только для типов с плавающей точкой.

Возвращаемое значение

T std:: numeric_limits < T > :: denorm_min ( )
/* неспециализированный */ T ( )
bool false
char 0
signed char 0
unsigned char 0
wchar_t 0
char8_t (начиная с C++20) 0
char16_t (начиная с C++11) 0
char32_t (начиная с C++11) 0
short 0
unsigned short 0
int 0
unsigned int 0
long 0
unsigned long 0
long long (начиная с C++11) 0
unsigned long long начиная с (начиная с C++11) 0
float FLT_TRUE_MIN ( 2 -149
если
std:: numeric_limits < float > :: is_iec559 равно true )
double DBL_TRUE_MIN ( 2 -1074
если
std:: numeric_limits < double > :: is_iec559 равно true )
long double LDBL_TRUE_MIN

Пример

Демонстрирует битовую структуру функции denorm_min() и выводит значения:

#include <cassert>
#include <cstdint>
#include <cstring>
#include <iostream>
#include <limits>
int main()
{
    // наименьшее субнормальное значение имеет бит знака = 0, экспоненту = 0
    // и только младший бит мантиссы равен 1
    std::uint32_t denorm_bits = 0x0001;
    float denorm_float;
    std::memcpy(&denorm_float, &denorm_bits, sizeof(float));
    assert(denorm_float == std::numeric_limits<float>::denorm_min());
    std::cout << "float\tmin()\t\tdenorm_min()\n";
    std::cout << "\t" << std::numeric_limits<float>::min() << '\t';
    std::cout <<         std::numeric_limits<float>::denorm_min() << '\n';
    std::cout << "double\tmin()\t\tdenorm_min()\n";
    std::cout << "\t" << std::numeric_limits<double>::min() << '\t';
    std::cout <<         std::numeric_limits<double>::denorm_min() << '\n';
}

Возможный вывод:

float	min()		denorm_min()
	1.17549e-38	1.4013e-45
double	min()		denorm_min()
	2.22507e-308	4.94066e-324

Смотрите также

[static]
возвращает наименьшее конечное значение заданного не-вещественного типа или наименьшее положительное нормализованное значение заданного вещественного типа
(public static member function)
[static]
идентифицирует стиль денормализации, используемый вещественным типом
(public static member constant)
[static] (C++11)
возвращает наименьшее конечное значение заданного типа, т.е. наиболее отрицательное значение для знаковых типов, 0 для беззнаковых типов
(public static member function)