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

если мой делитель = 0, sampleInterval Виль BCom бесконечность, и это будет = NaN, если оба дивидендов и делитель являются = 0Как мы можем сравнить, является ли результат арифметической операции NaN или бесконечностью.?

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

ответ

6

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

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

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

+0

спасибо ..... спасибо ... :-) –

+0

. Double.IsInfinity() не обрабатывает -ve бесконечность, что мы должны сделать для этого .. ??? –

+0

Странно. Double.IsInfinity должно совпадать + oo и -oo, как указано в http://msdn.microsoft.com/en-us/library/system.double.isinfinity%28v=VS.90%29.aspx. Я пробовал, и он работает как с положительной и отрицательной бесконечностью. –

0

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

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

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

Вы можете сделать то же самое для + оо или NaN с помощью сравнения:

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

 Смежные вопросы

  • Нет связанных вопросов^_^