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

Posted

技术标签:

【中文标题】我们如何比较算术运算的结果是 NaN 还是无穷大..?【英文标题】:how can we compare whether the result of an arithmetic operation is NaN or infinity..? 【发布时间】:2011-05-01 19:19:17 【问题描述】:
double SampleInterval = (PopulationValue - valueOfSignItems) / (SampleSize - noOfSignItems);

如果我的除数 = 0,sampleInterval 将 bcom 无穷大,如果除数和除数都 = 0,它将是 = NaN

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

【问题讨论】:

【参考方案1】:

升级一个旧主题以添加另一个解决方案(不是很好看,但如果不适合 -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;

【讨论】:

【参考方案2】:

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

if (Double.IsInfinity(SampleInterval))

  //TODO

if (Double.IsNaN(SampleInterval))

  //TODO

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

【讨论】:

。 Double.IsInfinity() 不处理 -ve 无穷大,我们必须为此做些什么..??? 很奇怪。 Double.IsInfinity 应该匹配 +oo 和 -oo 就像我在msdn.microsoft.com/en-us/library/… 中所说的那样,它适用于正无穷和负无穷。

以上是关于我们如何比较算术运算的结果是 NaN 还是无穷大..?的主要内容,如果未能解决你的问题,请参考以下文章

java中Infinity(无限)和NaN

Java运算符概要与数学函数

javascript算术溢出

为啥无穷大 × 0 = NaN?

java.运算符

js和jQuery