Согласно документации Matlab, когда Java-метод возвращает long, он преобразуется в double перед назначением в Matlab.
Точность была потеряна. Меня интересуют более низкие цифры long, возвращаемые методом Java. A double не может представлять их, но Matlab int64 может. (Это понятно, учитывая, что оба типа имеют 64 бита, а double использует некоторые из них для представления экспоненты.)
Если бы я имел контроль над Java-кодом, я мог бы вернуть массив с одним элементом, содержащий long - в этом случае Matlab сохраняет их как int64 s, но в моем случае я вызываю библиотечную функцию.
В настоящее время лучшим способом я могу написать обертку в Java, которая вызовет метод и вернет ответ в массиве. Но с этим подходом есть проблемы с переносимостью. Есть ли лучший способ?