2012-05-09 3 views

ответ

5

Вам не нужно, это просто ЬурейеЕ так:

typedef double jdouble; 

Так что никакого преобразования не требуется, как только у вас есть jdouble вы можете относиться к нему так же, как double.

Смотри, например, это code example from Standford:

JNIEXPORT jdouble JNICALL Java_Summer_sum__DD 
(JNIEnv *env, jobject jobj, jdouble j1, jdouble j2) { 
    return j1 + j2; 
} 

Добавка производится непосредственно с jdouble значениями, доверяя компилятор, чтобы выяснить, как генерировать необходимый код.

+0

Надеюсь, это правда для всех типов? _ctype_ равен -jtype_ –

+0

@ program-o-steve: В общем, нет. Типы Java имеют предварительно заданную ширину, тогда как типы C - нет. Другими словами, 'int' Java всегда 32 бита, тогда как' 'int'' нет. – NPE

0

Не требуется конвертация. Я использовал простой статический состав.

jfieldID varPtr = env->GetFieldID(dataClass, "var", "D"); 
jdouble jdoubleVar = env->GetDoubleField(dataClass, varPtr); 

double varDouble = static_cast<double>(jdoubleVar); 
Смежные вопросы