1

JNI を使用して、C++ から Java (Android) に double 値を渡したいと考えています。

関連する 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 でネイティブ メソッドを呼び出してアクセスすると、間違った値が返されます: 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 に答える