将jdouble转换为c类型的double

时间:2012-05-09 12:16:09

标签: java c java-native-interface

如何将java类型变量的jdouble转换为c类型的double变量?

2 个答案:

答案 0 :(得分:6)

你不必,它只是一个类似于这样的类型:

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值进行添加,信任编译器以确定如何生成所需的代码。

答案 1 :(得分:0)

不需要转换。我使用了一个简单的静态演员。

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

double varDouble = static_cast<double>(jdoubleVar);