我在识别浮点异常时遇到问题

时间:2010-06-15 16:28:11

标签: c++ exception

我在visual studio express中使用c ++生成随机表达式树,用于遗传算法类型的程序。

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

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

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

我不知道如何识别这些以便我可以抛出一个例外:

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

this post中的DigitalRoss似乎有解决方案,但正如我所理解的那样,我无法使其发挥作用。

我一直在寻找这个简单的代码,我假设将全部使用

时间,但没有运气。

感谢

3 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:0)

感谢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的回应是评论,我(也许有点预言)回答了我自己的问题。

答案 2 :(得分:0)

在Windows上,您可以使用api调用“_isnan()”和“_finite()”。

http://msdn.microsoft.com/en-us/library/aa298428%28VS.60%29.aspx
http://msdn.microsoft.com/en-us/library/aa246875%28v=VS.60%29.aspx