NaN 加数的除法不会产生 NaN 值[关闭]

Posted

技术标签:

【中文标题】NaN 加数的除法不会产生 NaN 值[关闭]【英文标题】:The devide of NaN plus number does not result the NaN value [closed] 【发布时间】: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 按预期工作 您在寻找.isNaN()吗? docs.oracle.com/javase/7/docs/api/java/lang/Double.html “是否有任何 其他 方法来检测 NaN 值?” 当然,if (result != result),这正是 Double.isNaN(result) 正在做的事情。 对不起,那是错误的问题,错误的代码。这是他的问题,但是当我使用结果进行比较时,结果变量不是 NaN,而是一个小值。 你为什么使用盒装的Double?使用double!! 【参考方案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");

【讨论】:

以上是关于NaN 加数的除法不会产生 NaN 值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

java豆知识——NFINITY,-INFINITY和NAN

IEEE 754浮点除法或减法本身是不是总是产生相同的值?

MATLAB中NaN是怎么产生的,又如何具体的去解决?

nan是啥意思

PowerQuery语法克服#NUM!

除以非零仍然可以创建 nan / infinity