java - Java中两个BigIntegers的关系操作

标签 java biginteger binary-search comparison-operators

在尝试使用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;
}

最佳答案

BigIntegerObject 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/

相关文章:

java - 如何将结果从 alertDialog 传递到 onActivityResult

java - 如何在 Java 中右对齐控制台输出的单列

java - 在调用另一个方法之前注入(inject)一个 Java 方法

c++ - 有没有办法解决使用 break 语句的问题?

java - 在数组中搜索某个数字 10 次并计算每次搜索的时间

c - 二分查找与最后一次出现的最接近的匹配

Java 8 Lambda 将 Number[][] 转换为 double[][]

algorithm - 大整数的 GCD 算法

java - Java巨矩阵的行列式

java - 变量太大的数字