我们如何比较算术运算的结果是 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 还是无穷大..?的主要内容,如果未能解决你的问题,请参考以下文章