Hallo,
ich habe hier eine Methode, die die Wurzel von einer BigInteger Zahl ziehen kann. Funktioniert auch soweit aber ich möchte nun, dass nur der Abgerundete Wert ausgegeben wird. Also z.B. sqrt(8) = 2 und nicht wie hier rauskommen würde 3. Kann mir da jemand helfen?
ich habe hier eine Methode, die die Wurzel von einer BigInteger Zahl ziehen kann. Funktioniert auch soweit aber ich möchte nun, dass nur der Abgerundete Wert ausgegeben wird. Also z.B. sqrt(8) = 2 und nicht wie hier rauskommen würde 3. Kann mir da jemand helfen?
Java:
public static BigInteger sqrt(BigInteger val){
BigInteger two = BigInteger.valueOf(2);
BigInteger a = BigInteger.ONE.shiftLeft(val.bitLength()/2);
BigInteger b;
do{
b = val.divide(a);
a = (a.add(b)).divide(two);
}
while (a.subtract(b).abs().compareTo(two) >= 0);
return a;
}