0

我将数学库与 JexlEngine 结合使用来计算不同的方程。在这个方程中,我也有这个pow函数。问题是当我有大量的数字时math.pow(99999, 10000),jexl 会尝试评估它,这需要大量时间和 CPU 使用率。如果解超过最大 Long 值,则不应进行评估。有没有办法在评估功率之前找出它是否大于最大长?

4

2 回答 2

3

您可以将指数与

double base = 99999;
double maxExp = Math.log(Long.MAX_VALUE)/Math.log(base);

如果功率高于 maxExp,你会得到一个溢出。

于 2013-11-11T21:00:12.723 回答
0

你可以试试

static final BigInteger BigLongMax = BigInteger.valueOf(Long.MAX_VALUE);
...
BigInteger.valueOf(99999).pow(10000).compareTo(BigLongMax);
于 2013-11-11T20:56:58.643 回答