2012-05-09 6 views

Antwort

5

Sie müssen nicht, es ist nur ein typedef wie so:

typedef double jdouble; 

Also keine Konvertierung erforderlich ist, wenn Sie eine jdouble haben Sie es nur als double behandeln kann.

Siehe zum Beispiel der code example from Standford:

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

Die Zugabe erfolgt direkt mit den jdouble Werten, die Compiler zu vertrauen, um herauszufinden, wie der erforderlichen Code zu generieren.

+0

Ich hoffe, es ist wahr für alle Arten? _ctype_ ist gleich _jtype_ –

+0

@ Programm-o-steve: Im Allgemeinen, nein. Java-Typen haben eine vorgegebene Breite, während C-Typen dies nicht tun. Mit anderen Worten, Javas "int" ist immer 32 Bits, während Cs "int" nicht ist. – NPE

0

Keine Konvertierung erforderlich. Ich habe eine einfache statische Besetzung verwendet.

jfieldID varPtr = env->GetFieldID(dataClass, "var", "D"); 
jdouble jdoubleVar = env->GetDoubleField(dataClass, varPtr); 

double varDouble = static_cast<double>(jdoubleVar); 
Verwandte Themen