我该如何将 Java 类型的
jdouble
变量转换为 C 类型的 double
变量?jdouble
变量转换为 C 类型的 double
变量?您不必这样做,只需要像这样使用typedef:
typedef double jdouble;
因此,不需要进行转换,一旦您拥有jdouble
,您可以将其视为double
类型处理。
例如,请查看这个来自斯坦福大学的代码示例:
JNIEXPORT jdouble JNICALL Java_Summer_sum__DD
(JNIEnv *env, jobject jobj, jdouble j1, jdouble j2) {
return j1 + j2;
}
这个加法是直接使用 jdouble
值进行的,信任编译器能够找到生成所需代码的方法。
不需要转换。我使用了一个简单的静态转换。
jfieldID varPtr = env->GetFieldID(dataClass, "var", "D");
jdouble jdoubleVar = env->GetDoubleField(dataClass, varPtr);
double varDouble = static_cast<double>(jdoubleVar);