我试图获得指数非常大的 double
值的幂(Java BigInteger
可以包含它(指数),例如:10^30 )
也就是说,我想找到类似 1.75^(10^30) 或 1.23^(34234534534222) 的东西。如果输出太大,请修改它像 10^9+7 这样的素数的模数。
如果我想找到 Integer
的幂,我可以使用 BigInteger.modPow()
方法,它采用 BigInteger
参数:
( BigInteger modPow(BigInteger exponent, BigInteger m) )
据我所知,这就是我在 Java 中得到的
new BigDecimal("1.5").pow(1000); // .pow() can get only integers as a parameter , but i want to pass a big number like a BigInteger
我无法在 Java 中为 BigDecimal
找到等效的 (BigInteger.modPow())
,或者我错过了。
有没有办法做到这一点 - 计算 float 的大幂(Decimal
)?
输入输出示例:
Input : num//或 1.5 或任何十进制数。也可以是整数。
exponent : exp//大整数或长整型值
output : num^exp//num 的 exp 次方
比如计算 1.23^(34234534534222)
如果输出太大,通过像 10^9+7 这样的素数取模来修改它
最佳答案
有一个Math.BigDecimal implementation of core mathematical functions其中有:
static java.math.BigDecimal powRound(java.math.BigDecimal x, java.math.BigInteger n)
Raise to an integer power and round.
这似乎正是您所需要的。它有一个外部库的事实表明 java.Math
中没有像这样的方法的核心实现。
作为旁注,我可以说,如果您的输入在小数位方面相当小(因此不是无理数)就像 1.5 一样,您可以将其转换为 15/10 并执行
(15^BigInteger)/(10^BigInteger)
使用 BigInteger
的 modPow(BigInteger exponent, BigInteger m)
。这显然会增加计算的复杂性和数量。
关于java - Java 中 BigDecimal 的 BigInteger 幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182975/