c++ - 如何检查无限 (1.#INF) 和不确定 (1.#IND) 数字?

标签 c++ class templates infinite indefinite

template <class T>
MyClass
{
    public:
        // ...

        void MyMethod(T dbNumber)
        {
            // ...

            T dbResult = do_some_operation_on_dbnumber(dbNumber);

            if (IsInfinite(dbResult))
            {
                // ...
            }
            else if (IsIndefinite(dbResult))
            {
                // ...
            }
            else
            {
                // ...
            }

            // ...
        }

        static bool IsInfinite(T dbNumber)
        {
            // How do I implement this?
        }

        static bool IsIndefinite(T dbNumber)
        {
            // How do I implement this?
        }

        // ...
};

我的代码中有一个数学运算有时会在模板变量中返回无限和不确定的结果。我想捕获这些不确定的结果。我该怎么做?

最佳答案

   #include <limits>

   using namespace std;

   double d = 1.0 / 0.0;
   if (d == numeric_limits<double>::infinity( ))
        cout << "Its infinite, all right" << endl;
   else
        cout << "Not in my book" << endl;

这有效。

关于c++ - 如何检查无限 (1.#INF) 和不确定 (1.#IND) 数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8617473/

相关文章:

c++ - 为什么 WinAPI 不创建具有配置大小的窗口?

c++ - 为什么将 std::mutex 锁定两次 'Undefined Behaviour' ?

javascript - .hover 不适用于我动态分配类的元素

python - 动态改变类的一个方法

azure - ARM 模板如果条件

C++ 使用自己的类的元素继承堆栈

c++ - 将一组字符串与一个字符串进行比较的最快方法是什么?

c++ - 如何根据用户输入创建和访问多个对象 - C++

Dropbox 和 GData API 中的 IOS 重复类 JSON

c++ - 为什么我会收到模板函数指针的链接器错误?