Namespaces
Variants

std::numeric_limits<T>::denorm_min

Начиная с ru.cppreference.net
 
 
Библиотека утилит
Поддержка языка
Поддержка типов (основные типы, RTTI)
Макросы проверки возможностей библиотеки (C++20)
Программные утилиты
Функции с переменным числом аргументов
Поддержка корутин (C++20)
Поддержка контрактов (C++26)
Трёхстороннее сравнение
(C++20)
(C++20)(C++20)(C++20)    
(C++20)(C++20)(C++20)

Общие утилиты
Реляционные операторы (устарело в C++20)
 
 
 
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)