Кажется, что этот файл хранится в другом Endianness , чем тот, который использует Java. Вероятно, перед преобразованием в удвоение байты необходимо поменять местами, попробуйте следующий код, чтобы прочитать значение:
long l = in.readLong();
double d = Double.longBitsToDouble(Long.reverseBytes(l));
Вот пример, иллюстрирующий проблему:
double d = 500.0;
long l1 = Double.doubleToLongBits(d);
long l2 = Long.reverseBytes(l1);
System.out.println(Double.longBitsToDouble(l1));
System.out.println(Double.longBitsToDouble(l2));
Выход:
500.0
2.088356E-317