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 值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章