2010-06-15 55 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;