其他NaN值是什么? [英] What are the other NaN values?
问题描述
文件c> java.lang.Double.NaN 表示它是
类型为
double
的非数字(NaN)值。它等于由Double.longBitsToDouble(0x7ff8000000000000L)
返回的值。
这似乎意味着还有其他的。如果是的话,我怎样才能得到他们,这可以做到portably?
要清楚,我想找到双 values
x
这样
Double。 doubleToRawLongBits(x)!= Double.doubleToRawLongBits(Double.NaN)
和
Double.isNaN(x)
您需要 doubleToRawLongBits
而不是 doubleToLongBits
。
$ b
doubleToRawLongBits
提取实际的二进制表示。 doubleToLongBits
不会将所有的 NaN
s转换为默认的 NaN $ c
double n = Double.longBitsToDouble(0x7ff8000000000000L); //默认NaN
double n2 = Double.longBitsToDouble(0x7ff8000000000100L); //也是NaN,但是M!= 0
System.out.printf(%X \ n,Double.doubleToLongBits(n));
System.out.printf(%X \ n,Double.doubleToRawLongBits(n));
System.out.printf(%X \ n,Double.doubleToLongBits(n2));
System.out.printf(%X \ n,Double.doubleToRawLongBits(n2));
输出:
7FF8000000000000
7FF8000000000000
7FF8000000000000
7FF8000000000100
The documentation for java.lang.Double.NaN
says that it is
A constant holding a Not-a-Number (NaN) value of type double
. It is equivalent to the value returned by Double.longBitsToDouble(0x7ff8000000000000L)
.
This seems to imply there are others. If so, how do I get hold of them, and can this be done portably?
To be clear, I would like to find the double
values x
such that
Double.doubleToRawLongBits(x) != Double.doubleToRawLongBits(Double.NaN)
and
Double.isNaN(x)
are both true.
解决方案 You need doubleToRawLongBits
rather than doubleToLongBits
.
doubleToRawLongBits
extracts the actual binary representation. doubleToLongBits
doesn't, it converts all NaN
s to the default NaN
first.
double n = Double.longBitsToDouble(0x7ff8000000000000L); // default NaN
double n2 = Double.longBitsToDouble(0x7ff8000000000100L); // also a NaN, but M != 0
System.out.printf("%X\n", Double.doubleToLongBits(n));
System.out.printf("%X\n", Double.doubleToRawLongBits(n));
System.out.printf("%X\n", Double.doubleToLongBits(n2));
System.out.printf("%X\n", Double.doubleToRawLongBits(n2));
output:
7FF8000000000000
7FF8000000000000
7FF8000000000000
7FF8000000000100
这篇关于其他NaN值是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!