Isnormal
定义于头文件 <cmath>
中。
描述
确定给定的浮点数num
是否为normal
,即既不是零
、次正规数
、无穷大
,也不是NaN
。
库为所有 cv-unqualified 浮点类型提供了重载,作为参数num
的类型 (自 C++23 起)。
为所有整数类型提供了额外的重载,这些整数类型被视为double。
声明
- C++23
- C++11
// 1)
constexpr bool isnormal( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr bool isnormal( Integer num );
// 1)
bool isnormal( float num );
// 2)
bool isnormal( double num );
// 3)
bool isnormal( long double num );
附加重载
// 4)
template< class Integer >
bool isnormal( Integer num );
参数
num
- 浮点或整数值
返回值
如果num
为normal
,则返回true
,否则返回false
。
备注
不要求提供的附加重载与附加重载完全一致。它们只需足以确保对于整数类型的参数 num,
std::isnormal(num)
与std::isnormal(static_cast<double>(num))
具有相同的效果。
示例
#include <cfloat>
#include <cmath>
#include <iostream>
int main()
{
std::cout
<< std::boolalpha
<< "isnormal(NaN) = "
<< std::isnormal(NAN) << '\n'
<< "isnormal(Inf) = "
<< std::isnormal(INFINITY) << '\n'
<< "isnormal(0.0) = "
<< std::isnormal(0.0) << '\n'
<< "isnormal(DBL_MIN/2.0) = "
<< std::isnormal(DBL_MIN / 2.0) << '\n'
<< "isnormal(1.0) = "
<< std::isnormal(1.0) << '\n';
}
结果
isnormal(NaN) = false
isnormal(Inf) = false
isnormal(0.0) = false
isnormal(DBL_MIN/2.0) = false
isnormal(1.0) = true