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