【问题标题】:The devide of NaN plus number does not result the NaN value [closed]NaN 加数的除法不会产生 NaN 值[关闭]
【发布时间】:2018-02-22 10:14:30
【问题描述】:

我正在使用Double.isNaN() 来检测 NaN 值。 `

Double nan  = Double.NaN;
Double num  = 1.5;
Double num2 = 4.5;

Double result = (nan+num)/num2;

System.out.println(result);// the result is NaN

if(Double.isNaN(result))
   System.out.println("not NaN");//true

还有其他方法可以检测 NaN 值吗?

【问题讨论】:

  • if(Double.isNaN(result)) System.out.println("not NaN"); ??不是。修复后:ideone.com/KJrKxG 按预期工作
  • “是否有任何 其他 方法来检测 NaN 值?” 当然,if (result != result),这正是 Double.isNaN(result) 正在做的事情。
  • 对不起,那是错误的问题,错误的代码。这是他的问题,但是当我使用结果进行比较时,结果变量不是 NaN,而是一个小值。
  • 你为什么使用盒装的Double?使用double!!

标签: java double nan


【解决方案1】:

您的条件与您的输出不对应 - 您检查结果是否实际上是 NaN,然后​​打印它不是。要么检查它不是:

if (!Double.isNaN(result))
    System.out.println("not NaN"); // This won't be reached in your case

或者打印它是:

if (Double.isNaN(result))
    System.out.println("NaN");

【讨论】:

    猜你喜欢
    • 2017-11-26
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2021-03-05
    相关资源
    最近更新 更多