1

我想使用 JNI 将双精度值从 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");

为什么价值观不一致?

4

1 回答 1

3

"%d" 不是与浮点类型兼容的格式说明符。如果您使用它,您将强制误解组成 jdouble 的位,并打印不正确的值。

返回给 Java 的值很可能是正确的(那里有相当数量的类型强制),并且记录不正确。

于 2013-05-09T14:31:02.637 回答