java - float .NaN == float .NaN

标签 java comparison floating-point nan

为什么这个比较给了我“假”?我查看了源代码,Float.NaN 被定义为

/** 
 * A constant holding a Not-a-Number (NaN) value of type
 * <code>float</code>.  It is equivalent to the value returned by
 * <code>Float.intBitsToFloat(0x7fc00000)</code>.
 */
public static final float NaN = 0.0f / 0.0f;

编辑:令人惊讶的是,如果我这样做:

System.out.println("FC " + (Float.compare(Float.NaN, Float.NaN)));

它给了我 0。所以 Float.compare() 确实认为 NaN is 等于它自己!

最佳答案

使用 Float.isNaN 检查 NaN 值。

关于java - float .NaN == float .NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341653/

相关文章:

java - 如何在 facelet 模板中将托管 bean 作为参数传递

c++ - 如何比较程序中的两个日期?

javascript - 是否有用于 javascript 的任何生产就绪的 LINQ 实现?

C++:如何将 double 舍入为 int?

java - 我可以从 Action 监听器内部在类中设置数组吗? java

Java for 循环,这里需要 continue 语句吗?

java - 我不知道如何将树插入堆栈

c# - 将文件夹当前状态与保存的先前状态进行比较 (C#)

ruby-on-rails - 将 float 舍入到 Ruby 中最近的四分之一

math - float 学有问题吗?