跳到主要内容

Isfinite

定义于头文件 <cmath> 中。

描述

确定给定的浮点数num是否具有有限值,即它是normal(正常)、subnormal(次正常)或zero(零),但不是infinite(无穷大)或NaN(非数字)。
该库为所有 cv-unqualified 浮点类型提供了重载,作为参数num的类型 (C++23 起)
​为所有整数类型提供了附加重载,它们被视为double

声明

// 1)
constexpr bool isfinite( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr 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

Isfinite

定义于头文件 <cmath> 中。

描述

确定给定的浮点数num是否具有有限值,即它是normal(正常)、subnormal(次正常)或zero(零),但不是infinite(无穷大)或NaN(非数字)。
该库为所有 cv-unqualified 浮点类型提供了重载,作为参数num的类型 (C++23 起)
​为所有整数类型提供了附加重载,它们被视为double

声明

// 1)
constexpr bool isfinite( /* floating-point-type */ num );
附加重载
// 2)
template< class Integer >
constexpr 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