如何在 java 中将 double 提升为 bigInteger

How to raise double to bigInteger in java

我需要计算 $a^b$,其中 aBigIntegerbdouble 是否可以在 [=18= 中计算]?

看起来标准 Java 库没有提供任何方法来计算具有任意精度的幂。

如果你真的不需要任意精度并且双精度就足够了,你可以使用 Math.pow(double, double).

如果你的指数实际上是一个整数,你可以尝试 BigInteger.pow(int):

BigInteger result = new BigInteger("312413431431431431434314134").pow(5);

如果您确实需要任意精确的幂运算,则必须查看一些库。比如有Apfloat:https://github.com/mtommila/apfloat

你可以这样做:

BigDecimal base = new BigDecimal("12341341341341341341341343414134134");
double exponent = 1.5;
Apfloat apfloatBase = new Apfloat(base);
Apfloat apfloatExponent = new Apfloat(exponent);
Apfloat result = ApfloatMath.pow(apfloatBase, apfloatExponent);

Java文档:http://www.apfloat.org/apfloat_java/docs/org/apfloat/Apfloat.html http://www.apfloat.org/apfloat_java/docs/org/apfloat/ApfloatMath.html