java - Java 中 BigDecimal 的 BigInteger 幂

标签 java biginteger bigdecimal

我试图获得指数非常大的 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)

使用 BigIntegermodPow(BigInteger exponent, BigInteger m)。这显然会增加计算的复杂性和数量。

关于java - Java 中 BigDecimal 的 BigInteger 幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182975/

相关文章:

用于非常大的数字的快速乘法的 Java 库

pointers - Golang : help understanding pointers, 分配和意外行为

java - 如何将 BigDecimal 限制为固定分数?

compilation - javassist编译错误没有这样的类

java - 具有物理特性的快速而肮脏的平台游戏在移动平台时会出现错误

java - BigInteger.and 正在做什么

java - Hudson - 清理旧插件数据

Java-将 BigDecimal 作为字符串返回 : Returns int

java - TreeCellRenderer 的设计

java - putPixel 与 ImageJ