gpt4 book ai didi

java - 将 float 从 Java 传递给 JNI,额外的小数

转载 作者:太空宇宙 更新时间:2023-11-04 11:33:41 25 4
gpt4 key购买 nike

我有一个 JNI 应用程序。

在Java实现中,我有以下内容

float floatValue = 23.45f;
Object[] objArray = new Object[] { floatValue } ;

当我调用 native 方法并传递我的对象数组时,在 CPP 中我执行以下操作:

JNIEXPORT void JNICALL Java_my_method(JNIEnv * env, jobject objInstance, jobjectArray objArray){
jclass floatClass = env->FindClass("java/lang/Float");
jmethodID floatMethod = env->GetMethodID(floatClass, "floatValue", "()F");
jobject obj = env->GetObjectArrayElement(objArray, 0);
jfloat val = env->CallFloatMethod(obj, floatMethod);
printf("JNI received float value: %f\n",val);
}

它打印:

JNI received float value: 23.450001

有什么想法吗?

最佳答案

23.45 == 23.450001 所以没有问题。

如果您对这种等价性感到惊讶,那么不管 JNI 是什么,C++ 和 Java 都是如此。它遵循通用底层浮点类型的有限精度。

关于java - 将 float 从 Java 传递给 JNI,额外的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23608687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com