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