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

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

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

【问题讨论】:

    标签: c# double nan infinity


    【解决方案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/… 中所说的那样,它适用于正无穷和负无穷。
      猜你喜欢
      • 2018-09-23
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2015-02-06
      • 2019-11-07
      • 2021-11-07
      • 2010-09-05
      • 1970-01-01
      相关资源
      最近更新 更多