在尝试使用BINARY SEARCH 方法计算BigInteger 的平方根 时,我陷入了如何比较< strong>两个 BigIntegers 用于满足比较操作。 比如,我想检查两个 BigInteger 变量之间的相等、大于或小于条件。
这是错误的一段代码,粗略地了解了我要执行的操作。如果能解决此问题,我们将不胜感激。
public static BigInteger squareroot(BigInteger bi){
//BigInteger bkl;
BigInteger low,high,mid;
low=ONE;
high=bi.add(ZERO);
while(low<=high)
{
mid =(low.add(high)).divide(new BigInteger("2"));
if(mid.multiply(mid).equals(bi))
return mid;
if(mid.multiply(mid) > bi)
high = mid -1 ;
else
low = mid + 1;
}
return mid;
}
最佳答案
BigInteger
是 Object
s 所以你不能将它们的内容与关系运算符进行比较,例如 >
, 和 ==
不会比较内容;它将比较对象引用。
然而,BigInteger
执行Comparable<BigInteger>
, 所以叫 compareTo
相反。
- 为了相等,使用
left.compareTo(right) == 0
. - 对于小于,使用
left.compareTo(right) < 0
. - 对于大于,使用
left.compareTo(right) > 0
.
关于java - Java中两个BigIntegers的关系操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23372573/