2010-06-15 47 views
0

我在Visual Studio Express中使用C++来生成用于遗传算法类型的程序的随机表达式树。我遇到了识别浮点异常的问题

因为它们是随机的,这些树木常常产生(我会打电话给他们例外,我不知道它们是什么)

多亏了George的建议,我把面罩_MCW_EM上,这样的硬件中断被关闭。 (默认)

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

我不知道如何识别这些,这样我可以抛出exeption:

if (variable == -1.#INF)

DigitalRoss在this post似乎有解决方案,但据我所知,我无法使它的工作。

我一直在到处找这个代码简单一点的地方,我认为将要使用的所有

的时间,但有没有运气。

感谢

+2

可能重复http://stackoverflow.com/questions/410853/how-do-you-check-for无穷大和 - 不定值-在-c)的 – kennytm 2010-06-15 16:36:45

回答

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的回应是作为一个评论,我(也许是很少有理由)回答我自己的问题。

1

试试这个:

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