当 'e' 是非常大的 e 的小数时,如何对 e 求幂?
How to do exponentiation e when 'e' is decimal for very large numbers of e?
说,
base = 2 和 e = 20000.5671
java.
中的上述示例如何执行(基础功率 e)
显然 Math.pow(base, e) 不是要打印的 "Infinity"
BigDecimal 只接受 'e' 类型的 int。
还有其他方法可以实现吗?期待更多 JDK 库而不是 3p。
您可以尝试使用 exponent product rule。
ab+c = ab * ac
因此您可以使用 BigDecimal 函数对 2 进行 20000 次方的运算,然后乘以 2 的 0.5671 次方
注:-
这种方法将产生一个答案,该答案仅在其最少部分的精度上是正确的。 Math.pow
函数 returns 是一个双精度数,因此只精确到大约 15 位有效数字。
所以,有一个数学上的解决方法:
BigDecimal.valueOf(2).pow(20000).multiply(BigDecimal.valueOf(Math.pow(2, .5671)))
说,
base = 2 和 e = 20000.5671
java.
中的上述示例如何执行(基础功率 e)显然 Math.pow(base, e) 不是要打印的 "Infinity"
BigDecimal 只接受 'e' 类型的 int。
还有其他方法可以实现吗?期待更多 JDK 库而不是 3p。
您可以尝试使用 exponent product rule。
ab+c = ab * ac
因此您可以使用 BigDecimal 函数对 2 进行 20000 次方的运算,然后乘以 2 的 0.5671 次方
注:-
这种方法将产生一个答案,该答案仅在其最少部分的精度上是正确的。 Math.pow
函数 returns 是一个双精度数,因此只精确到大约 15 位有效数字。
所以,有一个数学上的解决方法:
BigDecimal.valueOf(2).pow(20000).multiply(BigDecimal.valueOf(Math.pow(2, .5671)))