【问题标题】:Checking for NaN and using it in an If [duplicate]检查 NaN 并在 If [重复] 中使用它
【发布时间】:2012-10-12 05:56:15
【问题描述】:

我正在从数据库中收集一些数据并将它们加在一起以获得一些统计数据,但是由于我回溯了一些数据,因此计算的总和有时会显示为 NaN(不是数字)我想创建一个if 语句表示 if(not a number) 然后从我的表中排除这些数据。

如何测试数据(在本例中为双精度)是否为 NaN

【问题讨论】:

  • 你也关心小数吗?

标签: java if-statement nan


【解决方案1】:

您可以使用静态方法Float.isNaN(float)Double.isNaN(double)

double x = ... // whatever calculation you do

if (Double.isNaN(x)) {
    ...
}

【讨论】:

  • x 可以是任何数字类型或数字的包装器,这仍然有效。即它不必是double
  • 还有Float.isNan(x)
  • 还有isNaN(x)
  • @SunnyRGupta 那在哪里?
  • ? - 哎呀。我再次做到了。 JavaScript 混合在这里。没有 isNaN 直接。我收回我的话。
【解决方案2】:

您可以通过两种方式测试 NaN。您可以使用内置函数

Double.isNaN(x)

或执行以下检查

if (x != x)

如果 x 是 doublefloat

【讨论】:

  • 第二段代码只有在 x 是 double 时才有效。如果由于某种原因代码使用Double,那么它将最终比较参考。
  • 这是如何工作的? x 是双倍的,但不是数字?
  • @Vash: NaN 很特别,它可能是唯一一个比较不等于自身时返回true的东西。
【解决方案3】:

这对你有用。

if(number == Float.NaN)

【讨论】:

  • 这总是假的,因为 NaN != NaN
  • // 1 方法 if (Double.isNaN(doubleValue)) { } // 2. 方法 if (doubleObject.isNan()) { ... } 简单地做: if (var == Double .NaN) { ... }
猜你喜欢
  • 2011-03-27
  • 2017-10-03
  • 2015-03-26
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2021-06-08
  • 2021-07-19
  • 2021-05-29
相关资源
最近更新 更多