一尘不染

Java,比较BigInteger值

java

BigInteger bigInteger = …;

if(bigInteger.longValue() > 0) {  //original code
    //bigger than 0
}

//should I change to this?
if(bigInteger.compareTo(BigInteger.valueOf(0)) == 1) {
    //bigger than 0
}

我需要比较一些任意的BigInteger值。我想知道哪种方法是正确的。鉴于以上代码,应使用哪一个?原始代码在顶部。我正在考虑将其更改为第二种方法。


阅读 441

收藏
2020-12-03

共1个答案

一尘不染

如果要测试BigInteger是否具有正值,则第一种方法是错误的:longValue仅返回 低阶64位
,这可能会还原符号…因此,对于正的BigInteger,测试可能会失败。

另一种选择:如果值为正,则BigInteger#signum返回1

if (bigInteger.signum() == 1) {
 // bigger than 0
}
2020-12-03