我试图获取一个指数非常大的双精度值的幂(例如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())等效方法,或者我可能错过了。
有没有办法计算浮点数(Decimal
)的大幂?
输入和输出示例:
输入:num //或1.5或任何十进制数字。也可以是整数。
指数:exp //大整数或长整型值
输出:num^exp // num的exp次方
即如何计算1.23^(34234534534222)
如果输出太大,请通过获取10 ^ 9 + 7的质数模数进行修改。
0.14534523462656491590485
,并对其取模一个整数时,它仍然是0.14534523462656491590485
。只有当数字变得太大时,才会减少数字的位数,但你无法通过这种方式摆脱小数位。 - Marco13(double) 1.23 ** (34234534534222) % p
毫无意义,因为1.23不能被准确地表示为double,你得到的基本上是一个随机数。如果double再多一位精度,你会得到一个完全不相关的垃圾数字。++我猜,这是为了欧拉项目,那么你必须摆脱使用“double”。 - maaartinus