2012-05-09 32 views

Trả lời

5

Bạn không cần phải, nó chỉ là một typedef như vậy:

typedef double jdouble; 

Vì vậy, không chuyển đổi là cần thiết, một khi bạn có một jdouble bạn có thể đối xử với nó cũng giống như một double.

Xem ví dụ code example from Standford này:

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

Việc bổ sung được thực hiện trực tiếp với jdouble giá trị, tin tưởng vào trình biên dịch để tìm ra cách để tạo mã yêu cầu.

+0

Tôi hy vọng điều đó đúng cho tất cả các loại? _ctype_ bằng _jtype_ –

+0

@ program-o-steve: Nói chung, không. Các loại Java có chiều rộng được chỉ định trước, trong khi các kiểu C thì không. Nói cách khác, 'int' của Java luôn là 32 bit, trong khi' int' của C thì không. – NPE

0

Không cần chuyển đổi. Tôi đã sử dụng một dàn diễn viên tĩnh đơn giản.

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

double varDouble = static_cast<double>(jdoubleVar); 
Các vấn đề liên quan