2010-10-28 64 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;