我们如何比较算术运算的结果是NaN还是无穷大?

时间:2010-10-28 10:09:48

标签: c# double nan infinity

double SampleInterval = (PopulationValue - valueOfSignItems) / (SampleSize - noOfSignItems);

如果我的除数= 0,则sampleInterval将为bcom无穷大,如果被除数和除数均为= 0,则它将为= NaN

我需要在SampleInterval =无穷大时执行我的代码,在SampleInterval = NaN时在另一个上下文中执行。 怎么可能.. ?? 任何人都可以告诉我如何将无效值与无穷大或NaN进行比较。

2 个答案:

答案 0 :(得分:6)

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

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

不要直接与Double.NaN比较,它总是会返回false。

答案 1 :(得分:0)

提升旧主题以添加其他解决方案(不是很好看,但如果不为-oo工作仍值得尝试)

您可以自己生成-Infinity double,并将其用作比较

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;