如何在 java 中将 double 提升为 bigInteger
How to raise double to bigInteger in java
我需要计算 $a^b$
,其中 a
是 BigInteger
,b
是 double
是否可以在 [=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
我需要计算 $a^b$
,其中 a
是 BigInteger
,b
是 double
是否可以在 [=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