将jdouble类型转换为c语言中的double类型

7
我该如何将 Java 类型的 jdouble 变量转换为 C 类型的 double 变量?
2个回答

10

您不必这样做,只需要像这样使用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 值进行的,信任编译器能够找到生成所需代码的方法。


我希望它对所有类型都是正确的?_ctype_等于_jtype_。 - program-o-steve
2
通常不是这样的。Java类型具有预指定的宽度,而C类型则没有。换句话说,Java中的“int”始终为32位,而C中的“int”则不是。 - NPE

0

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

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

double varDouble = static_cast<double>(jdoubleVar);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接