【问题标题】:I'm having a problem identifying a floating point exception我在识别浮点异常时遇到问题
【发布时间】:2011-03-04 02:09:52
【问题描述】:

我在 Visual Studio Express 中使用 C++ 生成随机表达式树,用于遗传算法类型的程序。

因为它们是随机的,所以树经常生成(我将它们称为异常,我不确定它们是什么)

感谢George 的建议,我打开了掩码_MCW_EM,以便关闭硬件中断。 (默认)

因此,程序不间断地运行,但返回的一些值是:-1.#INF、-1.#NAN、-1.#INV。

我不知道如何识别这些以便我可以抛出异常:

if ( variable == -1.#INF)??

this post 中的 DigitalRoss 似乎有解决方案,但据我了解,我无法使其工作。

我一直在到处寻找这段简单的代码,我认为它会被所有人使用

时间,但没有运气。

谢谢

【问题讨论】:

标签: c++ exception


【解决方案1】:

试试这个:

#include <limits>
if( variable == numeric_limits<float>::infinity() )
  return 1;

【讨论】:

    【解决方案2】:

    感谢 KennyTM 发现重复项。链接中的一个链接回答了我的问题。

    我用过:

    #include "limits.h"

    #include "math.h"

    bool isIndeterminate(const double pV) 
    { 
        return (pV != pV); 
    };  
    
    bool isInfinite(const double pV) 
    { 
        return (pV >= DBL_MAX || pV <= -DBL_MAX); 
    }; 
    

    由于 KennyTM 的回复是评论,我(也许有点冒昧地)回答我自己的问题。

    【讨论】:

      【解决方案3】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-15
        相关资源
        最近更新 更多