Есть ли у кого-нибудь совет о том, как читать значения с плавающей точкой из двоичного файла, используя Java или Clojure?Я сравниваю свои текущие значения с результатом метода Python NumPy nump.fromfile('path', dtype="f")
, и я просто не получаю тот же ответ.Я подозреваю, что это потому, что метод Java DataInputStream.readFloat()
предполагает, что двоичный файл был написан Java, а эта документация показывает:
Считывает четыре входных байта и возвращает значение с плавающей запятой,Он делает это, сначала создав значение int точно так же, как метод readInt, затем преобразуя это значение int в float точно так же, как метод Float.intBitsToFloat.Этот метод подходит для чтения байтов, записанных методом writeFloat интерфейса DataOutput.
Итак, я думаю, что java читает значения с плавающей запятой в обратном направлении.Первые двенадцать байтов:
(0 -64 121 -60 0 -64 121 -60 0 -64 121 -60)
Clojure / java видит это как повторное 1.7676097E-38
, тогда как NumPy и Python видят это как повторное -999.0
.Для справки я использую этот набор данных .