Как мы можем сравнить, является ли результат арифметической операции NaN или бесконечность ..? - PullRequest
3 голосов
/ 28 октября 2010
double SampleInterval = (PopulationValue - valueOfSignItems) / (SampleSize - noOfSignItems);

, если мой делитель = 0, sampleInterval будет бесконечностью bcom и будет = NaN, если и делитель, и делитель = 0

Мне нужно сделать мой код, когда SampleInterval = бесконечность и в другом контекстекогда SampleInterval = NaN.Как это возможно..??Может ли кто-нибудь сказать мне, как я могу сравнить десятичное значение с бесконечностью или NaN .?

Ответы [ 2 ]

6 голосов
/ 28 октября 2010

Вы должны использовать методы Double.IsInfinity () и Double.IsNaN ().

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

Не сравнивайте напрямую с Double.NaN, он всегда будет возвращать false.

0 голосов
/ 23 апреля 2015

Поднимите старую тему, чтобы добавить другое решение (не очень красиво выглядящее, но все же стоит попробовать, если не работает для -oo)

Вы можете сгенерировать двойной -Infinity дважды самостоятельно и использовать его для сравнения.

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;
...