gpt4 book ai didi

c++ - 如何在 C++ 中检查无限和不确定的值?

转载 作者:IT老高 更新时间:2023-10-28 12:48:04 34 4
gpt4 key购买 nike

在我的程序中,当一个值被零除时,通常会出现无穷大。当我将零除以零时,我变得不确定。如何在 C++ 中检查无限和不确定的值?

在 C++ 中,无穷大由 1.#INF 表示。不确定由 -1.#IND 表示。问题是如何测试一个变量是无限的还是不确定的。检查无穷大相对简单:您可以在特定的 C++ 中找到无穷大定义。对于我的情况(VS2003),它是 std::numeric_limits::infinity()。您必须包含“限制”才能使用它。您可以将此无限值分配给变量,然后将其与某个值进行比较,以检查该值是否为无限。

Indeterminate 有点棘手,因为您无法将不确定的值与其他值进行比较。任何比较都返回 false。您可以使用此属性通过将其与自身进行比较来检测不确定的值。假设您有一个名为 aVal 的双变量。在正常情况下,aVal != aVal 返回 false。但如果值不确定,aIndVal != aIndVal 返回真。无限值不存在这种奇怪的情况,即 aInfVal != aInfVal 总是返回 false。

这里有两个函数可用于检查不确定值和无限值:

#include "limits.h"
#include "math.h"

bool isIndeterminate(const double pV)
{
return (pV != pV);
}

bool isInfinite(const double pV)
{
return (fabs(pV) == std::numeric_limits::infinity())
}

这些检查有没有更好的方法,我有什么遗漏吗?

最佳答案

对于 Visual Studio,我会使用 _isnan_finite , 或者 _fpclass .

但是,如果您可以访问支持 C++11 的标准库和编译器,则可以使用 std::isnanstd::isinf .

关于c++ - 如何在 C++ 中检查无限和不确定的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/410853/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com