2010-10-28 65 views
3
double SampleInterval = (PopulationValue - valueOfSignItems)/(SampleSize - noOfSignItems); 

如果我的除數= 0,sampleInterval WIL工商管理學士學位無窮大,這將是= NaN的,如果兩個被除數和除數= 0如何比較算術運算的結果是NaN還是無窮大?

我需要做我的代碼時SampleInterval =無窮大,而在另一個方面,當SampleInterval = NaN的。 怎麼可能.. ?? 可以任何一個電話我怎麼能比較decinmal值無窮或NaN。?

回答

6

您必須使用Double.IsInfinity()和Double.IsNaN()方法。

if (Double.IsInfinity(SampleInterval)) 
{ 
    //TODO 
} 
if (Double.IsNaN(SampleInterval)) 
{ 
    //TODO 
} 

不要直接比較Double.NaN,它會一直返回false。

+0

感謝.....非常感謝... :-) – 2010-10-28 10:21:42

+0

。 Double.IsInfinity()不處理-ve無窮大,我們必須爲此做... .. – 2010-10-28 10:36:49

+0

奇怪。 Double.IsInfinity應該匹配+ oo和-oo,就像http://msdn.microsoft.com/en-us/library/system.double.isinfinity%28v=VS.90%29.aspx中所說的那樣。我試過了,它同時適用於有正面和負面的無限。 – 2010-10-28 10:46:06

0

正在增加一個老話題添加另一種解決方案(不是真的很好看,但還是值得嘗試,如果不是-oo工作)

你可以自己產生負無窮雙,並把它作爲一個比較

double minusInfinity = -1.0/0.0; 
if (yourDouble==minusInfinity) { 
    // yourDouble is equal to -oo 
} 
else { 
    // yourDouble is not equal to -oo 
} 

您可以通過使用比較做+ OO或NaN相同:

double nan = 0.0/0.0; 
double infinity = 1.0/0.0;