初心者です。質問があります。
以下のTest.javaをコンパイルして実行します。

public class Test
{
public static void main(String[] args)
{

double xd = Double.longBitsToDouble(0x7ff8000000000000L);
System.out.println("xd = " + xd );

long xl = (long)xd;
System.out.println("xl = " + xl );
}
}

すると、結果として、
xd = NaN
xl = 0
と表示されます。

なぜ、xl にもともとの、
0x7ff8000000000000L
という値が入らないのでしょうか?