Tag:

Java是不是它的工作原理?

我正在查看openjdk-1.7.0_25源代码,我看到了这个方法: /** * Returns {@code true} if the specified number is a * Not-a-Number (NaN) value, {@code false} otherwise. * * @param v the value to be tested. * @return {@code true} if the argument is NaN; * {@code false} otherwise. */ static public boolean isNaN(float v) { return (v != v); } 当这个方法可以返回true时,我无法理解它是如何工作的?

Java数学 – 测试NaN

我希望为任何导致NaN分配的代码都有某种项目范围的失败快速机制(可能是RuntimeException )。 在我的项目中, NaN永远不是有效值。 我意识到我可以添加断言(使用isNaN )或其他测试,但我想知道是否有更优雅的方式。

Float.NaN == Float.NaN

为什么这种比较会让我“假”? 我查看了源代码并将Float.NaN定义为 /** * A constant holding a Not-a-Number (NaN) value of type * float. It is equivalent to the value returned by * Float.intBitsToFloat(0x7fc00000). */ public static final float NaN = 0.0f / 0.0f; 编辑:令人惊讶的是,如果我这样做: System.out.println(“FC ” + (Float.compare(Float.NaN, Float.NaN))); 它给了我0 。 所以Float.compare()确实认为NaN等于它自己!