我遇到了一些来自0/0的NaN在我正在制作的系统中不是Canonical的问题,我将问题减少到了这种情况。
public class Test {
public static void main(String[] args){
Float zero = Float.intBitsToFloat(0);
// Passes
assert Float.floatToRawIntBits(zero) == Float.floatToRawIntBits(0f);
// Fails
assert Float.floatToRawIntBits(zero / zero) == Float.floatToRawIntBits(0f / 0f);
}
}
这对我来说很奇怪。另外,在使用Intellij进行调试时,监视表达式会像您期望的那样响应;两个断言都通过了。
我使用的是openjdk版本“1.8.0_131”。