您需要
doubleToRawLongBits而不是
doubleToLongBits。
doubleToRawLongBits提取实际的二进制表示形式。
doubleToLongBits
不会,它首先将all转换
NaN为默认值
NaN。
double n = Double.longBitsToDouble(0x7ff8000000000000L); // default NaNdouble n2 = Double.longBitsToDouble(0x7ff8000000000100L); // also a NaN, but M != 0System.out.printf("%Xn", Double.doubleToLongBits(n));System.out.printf("%Xn", Double.doubleToRawLongBits(n));System.out.printf("%Xn", Double.doubleToLongBits(n2));System.out.printf("%Xn", Double.doubleToRawLongBits(n2));输出:
7FF80000000000007FF80000000000007FF80000000000007FF8000000000100



