如何在C ++中声明和初始化BigDecimal

时间:2014-04-06 16:44:47

标签: c++

我试图从C ++代码调用java方法,因为我正在使用JNI,我能够调用java方法但是在调用期间我想在c ++中使用BigDecimal,你能帮我使用BigDecimal(如何在C ++代码中声明和初始化。

1 个答案:

答案 0 :(得分:4)

BigDecimal只是本机部分的java对象 所以首先你需要创建它。因此,您需要一个类和一个方法ID。

jclass cls = (*env)->FindClass(env, "java/math/BigDecimal");
jmethodID = mid = (*env)->GetMethodID(env, cls, "<init>", "(D)V");

这将是BigDecimal的双重构造者 在此之后,您可以创建两个对象。

jobject bd1 = (*env)->NewObject(env,cls, mid, 1.222);
jobject bd2 = (*env)->NewObject(env,cls, mid, 0.0500);

现在您有两个BigDecimal,您可以将一个添加到另一个 首先,您需要再次使用add methodID。

jmethodID mid2 = (*env)->GetMethodID(env, cls, "add", "(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;");

然后你可以打电话。

jobject sum = (*env)->CallObjectMethod(env,bd1,mid2,bd2);

现在你有前两个BigDecimal的总和。要打印出来,您可以使用doubleValue()功能。