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