gpt4 book ai didi

java - Java 中 BigDecimal 的 BigInteger 幂

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:03:38 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com