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值。我想知道哪种方法是正确的。鉴于以上代码,应使用哪一个?原始代码在顶部。我正在考虑将其更改为第二种方法。
如果要测试BigInteger是否具有正值,则第一种方法是错误的:longValue仅返回 低阶64位 ,这可能会还原符号…因此,对于正的BigInteger,测试可能会失败。
longValue
另一种选择:如果值为正,则BigInteger#signum返回1:
BigInteger#signum
1
if (bigInteger.signum() == 1) { // bigger than 0 }