如何在C++中识别和初始化 BigDecimal

How to decleare and initialise a BigDecimal in C++

本文关键字:初始化 BigDecimal 识别 C++      更新时间:2023-10-16

我正在尝试从C++代码中调用java方法,为此我正在使用JNI,我可以调用java方法,但是在调用过程中我想在c ++中使用BigDecimal ,您能否帮助我在C++代码中使用BigDecimal(如何声明和初始化)。

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方法ID。

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

然后你可以调用它。

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

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