Учитывая ваш вариант использования, я бы, тем не менее, использовал double и сжимал их напрямую.
Причина в том, что сильные компрессоры, такие как 7zip , чрезвычайно хороши в обработке "структурированных" данных, которые представляют собой массив типа double (одни данные = 8 байтов, это очень регулярно и предсказуемо) .
Любая другая оптимизация, которую вы можете придумать "от руки", скорее всего будет неполноценной или предложит незначительное преимущество, в то же время стоив вам времени и рисков.
Обратите внимание, что вы все еще можете применить "трюк" преобразования двойного в целое перед сжатием, но я действительно не уверен, принесет ли это вам ощутимую выгоду, в то время как, с другой стороны, это серьезно уменьшит вашу способность справляться с непредвиденные диапазоны цифр в будущем.
[ Редактировать ] В зависимости от исходных данных, если биты «ниже уровня точности» являются «шумными», может быть полезно использовать коэффициент сжатия для удаления битов с шумом, либо округляя значение, либо даже непосредственное применение маски к младшим битам (я думаю, что последний метод не порадует пуристов, но, по крайней мере, вы можете напрямую выбрать уровень точности таким образом, сохраняя при этом доступным весь диапазон возможных значений).
Итак, подведем итог: я бы предложил прямое сжатие LZMA для вашего массива double.