2012-05-09 3 views

答えて

5

、それはそうのようなだけのtypedefです:

typedef double jdouble; 

ので、変換が不要な、あなたはjdoubleを持っていたら、あなただけのdoubleとして扱うことができます。

は、例えば、このcode example from Standfordを参照してください:

JNIEXPORT jdouble JNICALL Java_Summer_sum__DD 
(JNIEnv *env, jobject jobj, jdouble j1, jdouble j2) { 
    return j1 + j2; 
} 

添加が必要なコードを生成する方法を見つけ出すためにコンパイラを信頼、jdouble値で直接行われます。

+0

すべてのタイプに該当することを願っていますか? _ctype_は_jtype_と等価です –

+0

@ program-o-steve:一般的には、いいえ。 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); 
関連する問題