我想使用 JNI 将 double 值从 C++ 传递到 Java (Android)。
相关C++代码:
JNIEXPORT jdouble JNICALL
Java_test_MPEG_DASH_ffmpeg_PlayerUI_Notif(JNIEnv* env, jobject obj,jint st){
jdouble p=receiver->buffer->Notify();
LOGI("Notifyyyyyyyyy from jni is %d ",p);
return p;
}
显示 35、36 等
Java调用native方法访问时,返回错误值:0.0000133333
相关Java代码:
double buf=Notify();
Log.d(TAG, "Bufffffffffffffffffffffffffer :"+buf" ms");
为什么值不一致?
最佳答案
“%d”不是与浮点类型兼容的格式说明符。如果您使用它,您将强制错误解释包含 jdouble 的位,并打印不正确的值。
很可能返回给 Java 的值是正确的(那里有相当多的类型强制),并且记录的值不正确。
关于java - 为什么通过 JNI 在 Java 和 C++ 之间传递不正确的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16462742/